有两种方法可以创建 String 对象。
String str = new String("Java");
String str2 = "Java";
我知道在第一种情况下肯定会调用构造函数。但不知道第二个。会调用构造函数吗?
String substr = new String(str.substring(2,str.length)); // str is new object
String substr2 = new String(str2.substring(2,str2.length)); //str2 is not with new keyword
要确保在堆内存substr
中substr2
是相同类型的操作和相同的行为。
我知道一件事String.substring()
根本不会创建新对象,而是使用具有不同偏移量的先前 char[] 对象。
那么substr
and会发生什么substr2
?我们可以将这些东西与构造函数联系起来,因为偏移量是在构造函数内部生成的。