读书人

java的string的困惑?该如何解决

发布时间: 2012-03-01 10:25:46 作者: rapoo

java的string的困惑?
String s = new String("xyz");创建了几个String Object? 答案是两个
,怎么理解啊,我的理解是new了一个空间(堆内存),把xyz放到堆内存中的,然后s是指向后面的一个引用,怎么题上是两个啊。怎么理解啊?


[解决办法]
谁说是两个呀,我觉得你的理解是正确的。。
[解决办法]
创建了2个对象,1个是字符串类型的"xyz"对象,另1个是字符串类型的对象s,它指象对象"xyz". new需要申请新的空间,所以又有一个.

[解决办法]
s不是存放在栈里面的一个引用么,它指向堆里的对象'XYZ',s本身又不是存放在堆里的,怎么会是对象呢?
[解决办法]
两个对象
[解决办法]
2个 这问题在csdn回答很多次了
[解决办法]
堆一个,池一个
[解决办法]
学习中~~帮顶~~
[解决办法]
当然是两个了,先在String pool中创建了一个,如果在堆内存中也创建了一个。然后把堆中的引用赋给s.
[解决办法]
就是象 2楼中说的一样.
[解决办法]
9楼说的就是跟7楼一样,池一个,堆一个。
然后将堆内存中的引用地址赋给S。
[解决办法]
确实是两个。


[解决办法]
学习中
[解决办法]
String s = new String("xyz");
和String s = "xyz";是不一样滴,前者是2个,后者是1个
所以尽量用后者哈
[解决办法]
见帖子

http://topic.csdn.net/u/20071214/14/17ccdb98-7424-45ad-a1d0-87e78143990d.html

讨论的很火

不用新开帖子了

呵呵
[解决办法]
顶 15 楼
的 和我的想法是一样的
但是一般都用 String s = "xyz"; 呵呵
[解决办法]
答案可以是两个也可以是三个,两个的就不说了,对三个的做下解释,一个是"xyz"也可以算是一个字符串对象,加上以前的两个不就是三个了么?
[解决办法]
我是这样理解的:

String s=new String("xyz");

"xyz"在这条语句中虽然只是一个参数,但是它本身就是一个匿名的String对象,在堆内存中就会有一个匿名的String对象。

new String("xyz")等于执行了String的构造函数String(String original),它就会初始化一个新创建的 String 对象,表示一个与该参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的一个副本。

所以是有两个对象。

读书人网 >J2SE开发

热点推荐