gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:06:25 24 4
gpt4 key购买 nike

当我执行时:

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

我得到的输出为“true”。

但是当我运行时:

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

我得到的输出为“false”。

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

最佳答案

Java 中的字符串是不可变的。含义:

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

a 和 b 随意指向内存中的同一个对象

在这里您显式创建一个新对象

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

因此 2 不相等。

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

如果将 System.out.println(a==b); 重写为 System.out.println(a.equals(b)); 它将是对于这两种情况都是如此

关于Java 在比较两个相等的字符串时返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59998592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com