为什么这个字符串比较有效



我知道,在Java中,通常应该使用.equals()方法比较两个字符串,而使用==只比较内存位置。但是,我在Eclipse中编写了这个测试代码,它返回了true,并且与我一起工作的人都无法弄清楚原因。Java 是否更新以支持字符串的直接比较,只是没有人意识到还是我们疯了?堆栈溢出不会让我发布控制台的图片,但它打印出来是真的。

代码如下:

    public class Thing {
        public static void main(String[] args){
            String ar = "fish";
            String ar2 = "fish";
            System.out.println(ar == ar2);
        }
    }

卡梅隆:因为在这里它们都指的是内存中的相同地址。 这并不意味着当您像这样比较具有相同值的两个字符串时,它总是会发生。

字符串存储在字符串池中,当您声明具有相同值的新字符串时,它将引用现有字符串。这就是它返回真实的原因。

最新更新