请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

intern方法

图片描述
图片描述
在jdk6中,上面说调用intern方法时,如果字符串常量池先前已经创建该字符串对象,则返回池中该字符串对象的引用,这句话感觉和下面的运行结果有出入。
String s=new String(“a”);
s.intern()
此时按照上面说的,常量池中已经存在了"a",那s.intern()的时候,不该返回池中对象的引用吗?而s2=“a"也是指向池中的对象?我按照上面的说法进行分析,总感觉s==s2应该是true才对,不知道是不是我的理解的问题,希望老师解释一下。

正在回答 回答被采纳积分+3

1回答

翔仔 2021-03-13 23:41:49

同学好,

String s = new String("a");
这句话实际创建了两个对象,一个是常量池中的字符串常量“a”,另一个是堆上的String对象,s是它的引用。

s.intern();

这一句在池中寻找“a”,可以找到。所以池中没有发生改变。

String s2 = "a";

在池中寻找“a”,可以找到,所以s2指向池中“a”

所以运行之后s指向堆中对象,s2指向池中对象,当然不是指向同一个对象,结果为false.


0 回复 有任何疑惑可以回复我~
  • 提问者 mahsiaoko #1
    我知道什么原因了  假如这里String c=s.intern(),那么c==s2应该是true吗  我之前好像理解错了
    回复 有任何疑惑可以回复我~ 2021-03-16 14:12:34
  • 翔仔 回复 提问者 mahsiaoko #2
    同学可以直接试一下,这样印象更深刻哈,是true
    回复 有任何疑惑可以回复我~ 2021-03-17 01:44:00

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信