2

可能重复:
如何比较 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。为什么程序在任何其他情况下都不会确认字符串上的 ==?

4

3 回答 3

6

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

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

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

于 2012-05-10T14:11:39.807 回答
3

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

于 2012-05-10T14:11:52.240 回答
0

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

简而言之,用equals方法比较对象,用==算子比较原语。

于 2012-05-10T14:14:02.773 回答