== vs .equals - 为什么不同的行为?

时间:2012-05-10 14:09:46

标签: java string-comparison

  

可能重复:
  How do I compare strings in Java?

我很抱歉这个相当简单的问题。 我有这个非常简单的java程序:

public class ArgIt {
    public static void main(String[] args){
            if(args[0].equals("x")) System.out.print("x");
            if(args[0] == "x") System.out.println("x2 ");
    }
}

如果我调用程序> java ArgIt x 它只打印一个x。 为什么程序在其他任何情况下都不会确认字符串上的==?

3 个答案:

答案 0 :(得分:6)

在Java中,您必须使用equals()来比较String之间的相等性。 ==测试身份,这是一个不同的概念。

两个物体可以相等但不相同;另一方面,如果两个对象相同,则暗示它们是相等的。

如果两个对象在物理上指向内存中的相同地址,则两个对象是相同的,而如果它们具有相同的值,则两个对象相同,如equals()方法中的程序员所定义。一般来说,你更感兴趣的是找出两个对象是否相等。

答案 1 :(得分:3)

==测试指针相等性; .equals存在以测试值相等。

答案 2 :(得分:0)

在Java中,与==运算符进行比较检查标识是否相等,如引用(在对象的情况下)指向相同的内存位置。因此,只应使用==运算符比较基元,因为基元(intlongboolean等)是按值而不是通过引用存储的。

简而言之,使用equals方法比较对象,使用==运算符来比较基元。

相关问题