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

Luc*_*s T 2 java string-comparison

可能重复:
如何比较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 ");
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Ósc*_*pez 6

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

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

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

  • 在一般情况下你应该使用`equals()`.如果您对比较引用(内存地址,最后)感兴趣,请仅使用`==. (2认同)