kbhao7788
2017-04-02 03:11
采纳率: 19.8%
浏览 959
已采纳

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条)

相关推荐 更多相似问题