如果没有字符串池,字符串对象如何工作?

时间:2018-07-04 08:36:53

标签: java

String s1="abcd"
String s2="abcd"

如果不存在字符串池,是否将这两个字符串视为相同? 另外,如果字符串是可变的,并且您更改了s1,那么它也会同时更改s2还是s2指向旧的字符串abcd? 您能为我清楚地解释一下吗?

2 个答案:

答案 0 :(得分:2)

即使字符串池不存在。由于String是不可变的。当您将s1分配给新字符串时,它只会更改引用“ s1”。因此s2仍指向同一对象。

答案 1 :(得分:0)

如果Java中没有字符串池概念

  • 您可能会浪费大量内存

  • 具有可变性的黑客将回答您的问题 请参阅:-Why is String immutable in Java?

  • 它可能会引发安全问题

  • 由于设计,效率和安全性方面的考虑,字符串是不可变的。