java - 将字符串与 "=="的引用进行比较

标签 java string string-comparison

最近我看到这样的代码 -

class Test{
        public static void main(String[] args){

                String s1 = "String1"; //1
                String s2 = new String("String2"); //2

                System.out.println(s1.equals("String1"));
                System.out.println(s1=="String1"); //3

                System.out.println(s2.equals("String2")); 
                System.out.println(s2=="String2"); //4
        }
}

输出是 -

true
true
true
false

到目前为止我知道,在第1点“String1”被放入字符串池中并分配了字符串类型引用变量s1。没有创建任何String对象吗?

我们知道在第 2 点创建了一个新的 String 对象,并且在第 4 点表达式 (s2=="String2") 的计算结果为 false。如果在点 1 创建了一个新的 String 对象,则点 3 处的表达式 (s1=="String1") 如何计算为 true。如果在第 1 点没有创建新对象,第 3 点的表达式 (s1=="String1") 如何计算为 true?

提前致谢

最佳答案

==比较字符串的引用,用于值比较是不可靠的。您的s1=="String1"我想这是真的,因为您正在比较两个文字,与 s2 相比。新 String 对象与文字的比较。

关于java - 将字符串与 "=="的引用进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23496954/

相关文章:

java - 如何在Java7中处理2个不同版本的HttpServletRequest?

c# - 数字后修剪字符串

regex - 使用正则表达式的 Scala 捕获组

python - 那么有 4 个引号的故事是什么?

sql - Oracle SQL 中的字符串比较

java - Drools acquire() 的空指针异常

java - 在 Clojure 中使用 lmdbjava

java - Excel 到字符串 xls/xlsx 不同的结果

java - 我如何比较来自 jtextfield (.getText()) 的字符串输入与另一个 String[] 数组? +几个条件

c# - 字符串比较和单个字符的字母顺序