java - String + int 与 java 中相同的 String + int 比较?

标签 java

这个问题在这里已经有了答案:





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=" + ytrue因为 y是一个常量表达式,编译器决定 string 和 int 可以在编译时连接,产生两个相等的字符串。实际上,就好像"Y=10" == "Y=10"被写。

关于java - String + int 与 java 中相同的 String + int 比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62827746/

相关文章:

java - 将 ListView 项目 onclick 解析到另一个 Activity 并匹配 JSON 中的特定数据

java - 如何从Eclipse中的Java文件中查找Web项目路径?

java - 如何将用Netbeans编写的applet放入html文件中?

Java 2 列号格式

Thread.java 中的 java.lang.InternalError

java - Android adb 无法连接到 ip 地址

Java远程方法调用(RMI) : codebase property

java - 单个 keystore 和一个 Tomcat 实例中的多个证书

java - 能够存储微秒的 Date 对象

java - 解决不同数学运算符的优先级