-2

これが私が話していることです:

package finalExample;

public class FinalExample {

public static void main(String args[]) {

    final String str1 = "str";
    final String str2 = "ing";

    String str11 = "str";
    String str22 = "ing";

    System.out.println("Using equals() for non final :" + str11.equals(str22));
    System.out.println("Using == for non final :" + (str11==str22));
    System.out.println("MAGIC Using == for non final :" + str11==str22);

    System.out.println("Using equals() for final :" + str1.equals(str2));
    System.out.println("Using == for final :" + (str1==str2));
    System.out.println("MAGIC Using == for final :" + str1==str2);
}

}

出力は次のとおりです。

Using equals() for non final :false
Using == for non final :false
false
Using equals() for final :false
Using == for final :false
false

両方の MAGIC ステートメントは印刷されません。なぜそうなのですか?

4

3 に答える 3

11

演算子は演算子+よりも高い優先順位でバインドされる==ため、式は次のようになります。

"MAGIC Using == for final :" + str1==str2
("MAGIC Using == for final :" + str1)==str2
(a new String object created for the comparison can't)==str2
false
于 2013-10-17T06:25:09.953 に答える
3

評価しています

"MAGIC Using == for non final :" + str11

これは文字列であり、str2 と比較します

于 2013-10-17T06:25:25.337 に答える
2

印刷できたと思います。結果は偽です。したがって、「false」と出力されます。次のように考えることができます res = "MAGIC Using == for final :" + str1 ; println(res == str2) 。したがって、false と出力されます。

于 2013-10-17T06:29:40.557 に答える