黑马程序员技术交流社区

标题: 关于String 类对象在内存中的分配问题: [打印本页]

作者: 石三伢子1    时间: 2015-11-12 13:39
标题: 关于String 类对象在内存中的分配问题:
如题,String s = "asdf";String s1=new String("asdf"); String s2 = "as"; String s3="df"; String s4= s2+s3; String s5 = "as"+"df";
s s1 s2 s3 s4 s5 , 内存中有几个“asdf”? 这几个引用的地址值相同吗?内存中的“asdf“;放在什么内存里? 很晕的,哪位大神给一一解释下?

作者: 深寒丶    时间: 2015-11-12 23:16
String s = "asdf"这是一个常量,在常量池中。String s1=new String("asdf");这是创建一个对象,s1返回的其实是一个地址值,String s2 = "as"; String s3="df"; String s4= s2+s3。s2和s3是常量,但是他们做运算的时候其实是创建对象s2s3,然后再创建一个对象接收s2+s3。String s5 = "as"+"df"; 这其实是两个常量做运算,然后返回asdf去常量chi
作者: 深寒丶    时间: 2015-11-12 23:17
深寒丶 发表于 2015-11-12 23:16
String s = "asdf"这是一个常量,在常量池中。String s1=new String("asdf");这是创建一个对象,s1返回的其 ...

然后返回asdf去常量池查找,asdf。所以s1和s5是true,其他的都是false
作者: 石三伢子1    时间: 2015-11-28 11:31
深寒丶 发表于 2015-11-12 23:16
String s = "asdf"这是一个常量,在常量池中。String s1=new String("asdf");这是创建一个对象,s1返回的其 ...

谢谢了,分析的很详细;
作者: bbaijiajinger    时间: 2015-11-28 21:56
asdf只有一个在常量池中
as一个
df一个
相同的字符串只有一个
没有的字符串要创建




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2