是什么使引用比较(==)对Java中的某些字符串有效?

我有以下几行代码来比较String。str1不等于str2,这是可以理解的,因为它比较了对象引用。但是,为什么s1等于s2?


String s1 = "abc";

String s2 = "abc";


String str1 = new String("abc");

String str2 = new String("abc");


if (s1==s2)

    System.out.println("s1==s2");           

else

    System.out.println("s1!=s2");


if (str1==str2)

    System.out.println("str1==str2");           

else

    System.out.println("str1!=str2");


if (s1==str1)

    System.out.println("str1==s1");         

else

    System.out.println("str1!=s1");

输出:


  s1==s2

  str1!=str2

  str1!=s1 


慕神8447489
浏览 400回答 1
1回答

白衣染霜花

s1和s2是字符串文字。创建新的String文字时,编译器首先检查String池中是否存在任何表示该文字的文字。如果存在,则编译器返回该文字,否则编译器将创建一个新的。创建String时s2,编译器s1将从池中返回String ,因为之前已经创建了它。这就是为什么s1和s2相同的原因。这种行为称为实习。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java