这就是我在说的:
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);
}
Run Code Online (Sandbox Code Playgroud)
}
输出是:
Using equals() for non final :false
Using == for non final :false
false
Using equals() for final :false
Using == for final :false
false
Run Code Online (Sandbox Code Playgroud)
MAGIC声明均未打印.为什么会这样?
chr*_*ke- 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
633 次 |
| 最近记录: |