【发布时间】:2013-04-05 20:59:23
【问题描述】:
创建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 和substr2 会发生什么?我们可以将这些东西与构造函数联系起来,因为偏移量是在构造函数内部生成的吗?
【问题讨论】:
-
@NPE 我会问这样的问题只是为了很好地理解语言。
标签: java