我有以下两行Java代码:
String str = new String("My place")
String str1 = new String("My place")
很明显,使用 new String("My place") 会创建两个对象,一个是因为字符串池(interning)而产生的,另一个是使用 new 关键字创建的。但是我有些困惑,因为这里的参数具有相同的文字,所以不确定 str1 是否使用了相同的字符串池对象,导致结果有三个对象,还是不同的对象,导致结果有四个对象。
我有以下两行Java代码:
String str = new String("My place")
String str1 = new String("My place")
Java中字符串字面量的内部化是自动完成的,因此相同的内部化对象将在两个构造函数中使用,所以会有三个对象而不是四个。
相同的 interned 对象将被 str1 使用,因此会产生 3 个对象,尝试使用 equals 方法理解。
str1
与内部化无关,equals()
方法与问题有什么关系? - user207421