有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java在比较两个相等的字符串时返回false

当我执行:

String a = "hello";
String b = "hello";
System.out.println(a==b);

我得到的输出为“真”

但当我跑步时:

String a = new String("hello");
String b = "hello";
System.out.println(a==b);

我得到的输出为“false”

我知道,在第一种情况下,Java使“b”指向“a”指向的同一个对象,但为什么在第二种情况下它不能这样做呢


共 (1) 个答案

  1. # 1 楼答案

    Java中的字符串是不可变的。意思是:

    String a = "hello";
    String b = "hello";
    

    a和b通常指向内存中的同一个对象

    这里显式创建一个新对象

    String a = new String("hello");
    String b = "hello";
    

    因此二者并不相等

    ==比较内存地址。要检查Java中的一个对象是否等于另一个对象,应该使用所有对象上的equals方法

    如果你把System.out.println(a==b);重写为System.out.println(a.equals(b));,这两种情况都是如此