标题: String s = new String(“xyz”)创建的对象的内存分配 [打印本页] 作者: 胡建彪 时间: 2012-10-10 21:55 标题: String s = new String(“xyz”)创建的对象的内存分配 String s = new String(“xyz”);创建了几个String Object? 产生了两个实例化对象,一个是匿名对象”xyz”,另一个是通过关键字new实例化的。
那么这两个对象对应在内存中的哪一片空间中呢?初步猜测 ”xyz” 和 new 实例化的全部在堆内存中,s 在栈内存中,但是“xyz” 对应的引用在哪里呢?
作者: cehkongfu 时间: 2012-10-11 22:31
String str = new String("abc");
第一个对象是“abc”,每一个字符串都是一个常量,不可改变的,放在常量池里面,
而string new 出来的对象又是一个对象,他有一个实实在在的内存空间存放“abc”在常量池中的地址,而str是指向这块空间的引用,而通过这种方式的string对象中指向"abc"的值可以被改变,可以指向“bcd”,“dfefr”等等,但是str的地址不会变