java的String类中直接赋值和构造方法的区别
作者:Leah
这期内容当中的小编将会给大家带来有关java的String类中直接赋值和构造方法的区别,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
区别:
直接赋值:只会开辟一块堆内存空间,并且该字符串对象可以自动保存在对象池中以供下次使用。
构造方法:会开辟两块堆内存空间,其中一块成为垃圾空间,不会自动保存在对象池中,可以使用intern()方法手工入池。
直接赋值:
常量优化机制:
String类的设计使用了共享设计模式。
在JVM底层实际上会自动维护一个对象池(字符串对象池),如果现在采用了直接赋值的模式进行String类的对象实例化操作,那么该实例化对象(字符串内容)将自动保存到这个对象池之中。
如果下次继续使用直接赋值的模式声明String类对象,此时对象池之中如若有指定内容,将直接进行引用;
如若没有,则开辟新的字符串对象而后将其保存在对象池之中以供下次使用所谓的对象池就是一个对象数组(目的就是减少开销)
构造方法赋值:
类对象使用构造方法实例化是标准做法。String str = new String("hello");
通过分析可知,如果使用String构造方法就会开辟两块堆内存空间,并且其中一块堆内存将成为垃圾空间。除了这一缺点之外,也会对字符串共享产生问题。
因此,一般会采取直接赋值的方式。
上述就是小编为大家分享的java的String类中直接赋值和构造方法的区别了,如果您也有类似的疑惑,不妨碍参照上述分析进行理解。如