• 技术文章 >Java >Java入门

    java的String类中两种对象实例化的区别

    VV2019-11-25 17:13:34转载544

    区别:

    直接赋值:只会开辟一块堆内存空间,并且该字符串对象可以自动保存在对象池中以供下次使用。

    构造方法:会开辟两块堆内存空间,其中一块成为垃圾空间,不会自动保存在对象池中,可以使用intern()方法手工入池。

    java相关视频教程推荐:java视频教程

    直接赋值:

    08827364463b542c76a6b5b975b93b1.png

    常量优化机制:

    String类的设计使用了共享设计模式。

    在JVM底层实际上会自动维护一个对象池(字符串对象池),如果现在采用了直接赋值的模式进行String类的对象实例化操作,那么该实例化对象(字符串内容)将自动保存到这个对象池之中。

    如果下次继续使用直接赋值的模式声明String类对象,此时对象池之中如若有指定内容,将直接进行引用;

    如若没有,则开辟新的字符串对象而后将其保存在对象池之中以供下次使用所谓的对象池就是一个对象数组(目的就是减少开销)

    构造方法赋值:

    类对象使用构造方法实例化是标准做法。

    String str = new String("hello");

    通过分析可知,如果使用String构造方法就会开辟两块堆内存空间,并且其中一块堆内存将成为垃圾空间。除了这一缺点之外,也会对字符串共享产生问题。

    因此,一般会采取直接赋值的方式。

    相关文章教程推荐:java入门

    以上就是java的String类中两种对象实例化的区别的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    上一篇:如何在linux系统下安装jdk1.8 下一篇:深入理解java中的异或运算符
    大前端线上培训班

    相关文章推荐

    • java中关于对象的详细介绍• Java中继承图文详解• java中线程的完整生命周期有哪几种状态• 浅谈java枚举类(附代码)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网