采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
在jdk6中,上面说调用intern方法时,如果字符串常量池先前已经创建该字符串对象,则返回池中该字符串对象的引用,这句话感觉和下面的运行结果有出入。 String s=new String(“a”); s.intern() 此时按照上面说的,常量池中已经存在了"a",那s.intern()的时候,不该返回池中对象的引用吗?而s2=“a"也是指向池中的对象?我按照上面的说法进行分析,总感觉s==s2应该是true才对,不知道是不是我的理解的问题,希望老师解释一下。
同学好,
String s = new String("a");这句话实际创建了两个对象,一个是常量池中的字符串常量“a”,另一个是堆上的String对象,s是它的引用。
s.intern();
这一句在池中寻找“a”,可以找到。所以池中没有发生改变。
String s2 = "a";
在池中寻找“a”,可以找到,所以s2指向池中“a”
所以运行之后s指向堆中对象,s2指向池中对象,当然不是指向同一个对象,结果为false.
我知道什么原因了 假如这里String c=s.intern(),那么c==s2应该是true吗 我之前好像理解错了
同学可以直接试一下,这样印象更深刻哈,是true
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.8k 27
2.7k 22
1.2k 15
1.4k 14
1.3k 14