Java:在String和int变量上使用equals()和===

Gny*_*nyG 0 java equals equality-operator

我试图理解相等(==)equals()方法,但无法推断出这种行为.有人可以使用以下println语句解释此行为.

String a="Hai";
String b="Hai";
int c=5, d=5;

System.out.println("Check1 : " + (c==d)); //prints  "Check1 : true"

System.out.println("Check2 : " + a==b); //prints false. It didn't print the string "Check2 : "

System.out.println("Check3 : " +a.equals(b)); //prints "Check3 : true"

System.out.println(" c==d : " + c==d);   //compile time error - incomparable types: java.lang.String and int
Run Code Online (Sandbox Code Playgroud)

非常感谢.

Mal*_*jam 6

这是因为操作的顺序,在这部分:

" c==d : " + c == d  
Run Code Online (Sandbox Code Playgroud)

没有括号,所以编译器会:

(" c==d : " + c) == d  
Run Code Online (Sandbox Code Playgroud)

而且你得到一个错误,因为string == int没有定义.对于另一个例子,它也是一样的想法:

"Check2 : " + a == b ? ("Check2 : " + a) == b ? "Check2 : Hai" == "Hai" ? false
Run Code Online (Sandbox Code Playgroud)