Blo*_*rot 7 java string equality
String s1 = "BloodParrot is the man";
String s2 = "BloodParrot is the man";
String s3 = new String("BloodParrot is the man");
System.out.println(s1.equals(s2));
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s1.equals(s3));
Run Code Online (Sandbox Code Playgroud)
//输出
真
真
假
真
如果所有三个字符串具有相同的内容,为什么所有字符串都没有在内存中相同的位置?
Bil*_*ard 15
Java只会自动实现字符串文字.new默认情况下,不会禁用新的String对象(使用关键字创建).您可以使用String.intern()方法实现现有的String对象.调用intern将检查现有的String池以查找匹配的对象,如果存在则返回它,如果没有匹配则添加它.
如果添加该行
s3 = s3.intern();
Run Code Online (Sandbox Code Playgroud)
创建后立即使用您的代码s3,您将看到输出的差异.
这当然提出了何时使用==以及何时equals在Java中使用该方法这一非常重要的主题.equals在处理对象引用时,您几乎总是想要使用.==运算符比较参考值,这几乎不是您要比较的意思.了解差异有助于您决定何时使用==或equals.