"张三"、"李四"、a、new String()四个对象
a是一个引用类型变量,
new String("张三")新建了一个对象,参数"张三"是字符串
"李四"是一个字符串,保存在常量池
a = "张三"+"李四"也是一个字符串,在常量池
String的构造函数:
public String(String original) {
int size = original.count;
char[] originalValue = original.value;
char[] v;
if (originalValue.length > size) {
int off = original.offset;
v = Arrays.copyOfRange(originalValue, off, off + size);
} else {
v = originalValue;
}
this.offset = 0;
this.count = size;
this.value = v;
}
执行 Arrays.copyOfRange(originalValue, off, off + size);将原来的字符串复制,赋值给this.value作者: 揭耀祖 时间: 2012-5-25 18:25 本帖最后由 jxj4227982333 于 2012-5-25 19:25 编辑
我认为是创建了四个对象,
String a = new String("张三")+"李四";
new String()是一个对象,“张三”是一个对象,存在于字符串池中,“李四”也是一个对象也存在于字符串池中,然后还有一个“张三”+“李四”又是一个对象,它们被“+”连接后创建一个对象在毕老师的视频中毕老师说String a = new String("abc");是创建军了两个对象。new String()和"abc"
而在这里却有四个对象。而a 并不是一个对象,它只是个String类型的变量而已。
我之前的回答错了,经过我上网查资料后,发现原来是这么回事。惭愧惭愧!