我目前正在学习 Java 的自学课程,并且完全被其中一个问题难住了,我想知道是否有人可以帮助我理解......
问题:以下三个代码段的输出是什么?充分解释差异。
public static void method2(){
String mystring1 = "Hello World";
String mystring2 = new String("Hello World");
if (mystring1.equals(mystring2)) {
System.out.println("M2 The 2 strings are equal");
} else {
System.out.println("M2 The 2 strings are not equal");
}
}
public static void method3(){
String mystring1 = "Hello World";
String mystring2 = "Hello World";
if (mystring1 == mystring2) {
System.out.println("M3 The 2 strings are equal");
} else {
System.out.println("M3 The 2 strings are not equal");
}
}
我给出的答案:
方法 2:“M2 The 2 strings are equal” 它返回 equal,因为即使它们是两个单独的字符串, (mystring1.equals(mystring2)) 也可以识别出这两个字符串具有完全相同的值。如果在这里使用 == 则返回不相等,因为它们是两个不同的对象。
方法 3:“M2 The 2 strings are equal” 这两个字符串是相等的,因为它们都指向池中完全相同的字符串。== 在这里使用,使其查看两个值,并识别出它们都具有完全相同的字符。它识别出 Hello World 已经在池中,因此它将 myString2 指向该字符串。
我对自己的回答很有信心,但这是错误的。有什么帮助吗?