这个问题在这里已经有了答案:
What is Java String interning?
(8 个回答)
去年关闭。
为什么我收到 false
在下面的声明中。
int x = 10;
System.out.println("X="+x=="X="+x); //false
如果我是对的,那么在评估之后它会看起来像下面的语句..System.out.println("X=10"=="X=10"); //true
以及为什么我收到 true
在这个..final int y = 10;
System.out.println("Y="+y=="Y="+y);
最佳答案
应该使用 equals
比较字符串方法。 ==
比较身份。"X=" + x == "X=" + x
创建两个单独的字符串实例,虽然内容相同,但它们的身份不同。"X=10" == "X=10"
是 true
因为字符串实习。编译器遇到两个内容相同的字符串字面量,判定这两次出现指向同一个 String 对象,因此它们具有相同的身份。"Y=" + y == "Y=" + y
是 true
因为 y
是一个常量表达式,编译器决定 string 和 int 可以在编译时连接,产生两个相等的字符串。实际上,就好像"Y=10" == "Y=10"
被写。
关于java - String + int 与 java 中相同的 String + int 比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62827746/