찾다

 >  Q&A  >  본문

字符串常量池里面没有“abc”为什么下面输出的结果为false,true?

public class Test {
 public static void main(String[] args) {
  String s1 = new String("abc");
  String s2 = s1.intern();
  System.out.println(s1==s2);这里为什么输出false
  String s3 = "123";
  String s4 = s3.intern();
  System.out.println(s3==s4);
 }
}


静待花开静待花开2796일 전1283

모든 응답(2)나는 대답할 것이다

  • 数据分析师

    数据分析师2017-10-01 01:11:15

    문자열 상수 풀에 "abc"가 없습니다. 결과가 false 및 true 아래로 출력되는 이유는 무엇입니까? - PHP 중국어 웹사이트 Q&A - 문자열 상수 풀에 "abc"가 없고 false 및 true 아래에 결과가 출력되는 이유는 무엇입니까? ? - PHP 중국어 웹사이트 Q&A

    와서 보고 배워보세요.

    회신하다
    0
  • phpcn_u814

    phpcn_u8142017-03-29 17:48:03

    String s1 = new String("abc"); 生成了常量池中的“adc” 和堆空间中的字符串对象。

     String s2 = s1.intern(); 这一行的作用是s1对象去常量池中寻找后发现"abc"已经存在于常量池中了。 然后生成一个s2的引用指向常量池中的“abc”对象。

    结果就是 s1 和 s2 的引用地址明显不同。因此返回了false。

    String s3 = "123";     这一行代码会直接去常量池中创建

     String s4 = s3.intern();  发现"123"已经在常量池存在 直接引用指向常量池“123”对象

    结果就是s3 和s4 的引用地址相同 返回true



    不过jdk1.6 和1.7 有点不同 建议去看看api  或者百度下


    회신하다
    0
  • 취소회신하다