kbhao7788 2017-04-02 03:11 采纳率: 0%
浏览 961
已采纳

java 入池问题怎么解决!!!!!!!!!!

String stri="hfeigehgiergh".intern();
String st=“hfeigehgiergh”;
System.out.println(st==stri);
为什么是true 它的原理是什么

  • 写回答

3条回答

  • 编程爱好者熊浪 2017-04-02 05:45
    关注

    String s="hfeigehgiergh";
    String stri="hfeigehgiergh".intern();
    String st="hfeigehgiergh";
    System.out.println(s==st);
    System.out.println(st==stri);
    你先确定s==st是true吗,string跟普通的引用类型有点不同,它的值不是放在堆里面的,而是放在常量池里面的,当str在常量池里面存储了一份值之后,第二次有个字符串赋值,它会先到常量池里面找下有没有相同的值,有就不会添加,会直接使用这个值,没有就新添加一个,因此2个字符串其实是指向同一个值,所以是true,你.intern()这个方法就是告诉字符串先去常量池里面找下有没有这个值,其实加不加都会先去找一遍。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?