私は現在、Java の独学コースを受講していますが、質問の 1 つに完全に困惑し、誰かが意味を理解するのを手伝ってくれるかどうか疑問に思っていました...
質問: 次の 3 つのコード セグメントからの出力は何ですか? 違いを完全に説明します。
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 2 つの文字列は等しい" 2 つの別個の文字列であるにもかかわらず、(mystring1.equals(mystring2)) は 2 つの文字列がまったく同じ値を持つことを認識するため、equal を返します。ここで == が使用された場合、それらは 2 つの異なるオブジェクトであるため、等しくないものとして返されます。
方法 3: "M2 2 つの文字列は等しい" 2 つの文字列は、両方ともプール内のまったく同じ文字列を指しているため、等しいです。ここでは == を使用して 2 つの値を調べ、両方の文字がまったく同じであることを認識しています。Hello World が既にプールにあることを認識するため、myString2 をその文字列に向けます。
私は自分の答えにかなり自信を持っていましたが、それは間違っています。何か助けはありますか?