小伙伴们注意了!
小编在这里给大家送上关注福利:
转发本文,关注+私信小编“资料”即可领取小编精心准备的资料一份!
在Java中,字符串可以通过两种方式创建:
使用双引号和使用构造函数的区别是什么?
一、 双引号vs.构造函数
这个问题可以用两个简单的例子来回答。
例子1:
a==b为真,因为a和b引用方法区域中的相同字符串文字。
内存引用是相同的。
当多次创建相同的字符串文字时,只存储每个不同字符串值的一个副本。
这叫做“字符串实习”。
Java中的所有编译时常量字符串都是自动换行的。
例子2:
c==d为false,因为c和d引用堆中的两个不同对象。
不同的对象总是有不同的内存引用。
此图说明了上述两种情况:
二、 运行时字符串实习
感谢LukasEder(他的评论如下):
字符串实习仍然可以在运行时,即使两个字符串是用构造函数构造:
三、何时使用哪个
因为文字“abcd”已经是String类型,所以使用构造函数将创建额外的不必要的对象。
因此,如果您只需要创建一个字符串,那么应该使用双引号。
如果您确实需要在堆中创建一个新对象,那么应该使用构造函数。