为什么这个字符串比较工作?

时间:2015-04-30 13:47:45

标签: java string memory string-comparison

我知道,在Java中,通常应使用.equals()方法比较两个字符串,并且使用==仅比较内存位置。但是,我在Eclipse中快速编写了这个测试代码并且它返回了真实状态,没有一个与我合作的人可以找出原因。 Java更新是否支持直接比较字符串而没有人意识到或者我们疯了吗? Stack Overflow不让我发布控制台的图片,但它打印出来是真的。

以下是代码:

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

2 个答案:

答案 0 :(得分:0)

Cameron:因为在这里他们都在内存中引用相同的地址。这并不意味着当你比较两个具有相同值的字符串时总会发生这种情况。

答案 1 :(得分:-3)

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