A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,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“;放在什么内存里? 很晕的,哪位大神给一一解释下?

4 个回复

倒序浏览
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

评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报
深寒丶 发表于 2015-11-12 23:16
String s = "asdf"这是一个常量,在常量池中。String s1=new String("asdf");这是创建一个对象,s1返回的其 ...

然后返回asdf去常量池查找,asdf。所以s1和s5是true,其他的都是false
回复 使用道具 举报
深寒丶 发表于 2015-11-12 23:16
String s = "asdf"这是一个常量,在常量池中。String s1=new String("asdf");这是创建一个对象,s1返回的其 ...

谢谢了,分析的很详细;
回复 使用道具 举报
asdf只有一个在常量池中
as一个
df一个
相同的字符串只有一个
没有的字符串要创建
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马