Jig*_*esh -1 java string comparison
可能重复:
如何比较Java中的字符串?
当我运行以下代码为"java XYZ BOY"输出为"无效类型"时,如何?
public class XYZ
{
public static void main(String args[])
{
if(args[0]=="BOY")
System.out.println("He is boy");
else if(args[0]=="Girl")
System.out.println("She is girl");
else
System.out.println("Invalid type");
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用时args[0].equals("BOY"),它会提供所需的输出.当我不使用时,我想知道为什么出现问题String.equals()?
运算符==测试两个变量是否引用了您不感兴趣的同一个对象.相反,您想知道两个String变量是否引用String对象,这些对象在相同的顺序和相同的情况下保持相同的字符,这是做什么equals(...),或者无论如何,这是做什么的equalsIgnoreCase(...).
所有类都equals(...)从最终父类Object获取一个默认方法,如果没有被覆盖,它将==按照API 执行相同的操作:
类Object的equals方法实现了对象上最具辨别力的等价关系; 也就是说,对于任何非空引用值x和y,当且仅当x和y引用同一对象时,此方法才返回true(x == y的值为true).
许多类都重写了这个方法,以使用他们自己的对类有意义的测试.String就是这样一个类.有关String如何执行此操作的更多详细信息,请查看其API,其中指出:
将此字符串与指定的对象进行比较.当且仅当参数不为null并且是表示与此对象相同的字符序列的String对象时,结果才为真.
说完所有这些 - 投票把这个问题作为重复.