我很抱歉这个相当简单的问题。 我有这个非常简单的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。 为什么程序在其他任何情况下都不会确认字符串上的==?
答案 0 :(得分:6)
在Java中,您必须使用equals()
来比较String
之间的相等性。 ==
测试身份,这是一个不同的概念。
两个物体可以相等但不相同;另一方面,如果两个对象相同,则暗示它们是相等的。
如果两个对象在物理上指向内存中的相同地址,则两个对象是相同的,而如果它们具有相同的值,则两个对象相同,如equals()
方法中的程序员所定义。一般来说,你更感兴趣的是找出两个对象是否相等。
答案 1 :(得分:3)
==
测试指针相等性; .equals
存在以测试值相等。
答案 2 :(得分:0)
在Java中,与==
运算符进行比较检查标识是否相等,如引用(在对象的情况下)指向相同的内存位置。因此,只应使用==
运算符比较基元,因为基元(int
,long
,boolean
等)是按值而不是通过引用存储的。
简而言之,使用equals
方法比较对象,使用==
运算符来比较基元。