Welcome to MLink Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
283 views
in Technique[技术] by (71.8m points)

java中的字符串常量池

图片描述

求各位指点

问题2:

String tb=new String("aa");
    String intern = tb.intern();
    System.out.println(tb==intern);//1.7 false
    
    
    String tc=new String("a")+new String("b");
    String intern2 = tc.intern();
    System.out.println(tc==intern2);//jdk 1.7 true

这两段代码输出效果不同,为什么?
个人理解:
对于一个String对象调用intern方法之后会将这个对象的引用放置到常量池中(jdk1.7),这样会使得常量池中的引用和函数栈中的引用指向同一个堆中string对象。那么为什么上面的第一个输出还是false??


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

别去纠结String.intern()这种问题,字符串永远用equals来比较!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to MLink Developer Q&A Community for programmer and developer-Open, Learning and Share
...