Piy*_*agi 3 java equality operator-keyword
为什么==运算符与引用的行为不同于原始数据类型?
String string1 = "myString";
String string2 = "myString";
int num1 = 10;
int num2 = 10;
System.out.println("Value is "+string1==string2); //WORKS FINE
System.out.println("Value is "+num1==num2); //COMPILE TIME ERROR
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚这背后的任何逻辑原因.
PS:故意不使用打印声明中的括号.
谢谢 :)
ars*_*jii 10
这是运营商优先权的问题.您的第二个印刷语句被解释为:
System.out.println(("Value is "+num1)==num2); // notice the parenthesis
Run Code Online (Sandbox Code Playgroud)
它试图将字符串与int进行比较,从而产生编译时错误.添加括号来解决问题:
System.out.println("Value is " + (num1==num2)); // compiles
Run Code Online (Sandbox Code Playgroud)
Java的运算符的优先级中列出运营商.
现在,这个:
// original:
System.out.println("Value is "+string1==string2);
// equivalent to:
System.out.println(("Value is "+string1)==string2);
Run Code Online (Sandbox Code Playgroud)
因为"Value is "+string1字符串本身是有效的,所以将它string2与它进行比较是有效的==.
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |