我知道如果我有 2 个具有相同值的字符串变量,由于 java 字符串池,它们指向同一个字符串对象。
下面是一个例子:
String test = "1234";
String test2 = "1234";
System.out.println(test == test2);
System.out.println("1234" == test2);
Run Code Online (Sandbox Code Playgroud)
输出如下:
true
true
Run Code Online (Sandbox Code Playgroud)
但是如果我有以下代码,它会打印出它们不是同一个对象
String test = "1234";
int i = 1234;
String s = "" + i;
System.out.println(test == s);
System.out.println("1234" == s);
Run Code Online (Sandbox Code Playgroud)
输出:
false
false
Run Code Online (Sandbox Code Playgroud)
任何人都会向我解释这种行为的原因吗?