==,equals()和instanceof()之间的区别

Sum*_*hra 0 java string string-comparison

String s=new String("Computer");
if(s=="Computer")
    System.out.print("equals A");
if(s.equals("Computer"))
    System.out.print("Equal B");
Run Code Online (Sandbox Code Playgroud)

输出是 Equal B

现在为什么 ==不生产equals A

是什么instanceof

SCd*_*CdF 5

== 是参考等于,如',这个确切的对象是与其他对象完全相同的对象吗?'.

当你创建s一个新对象时,它也不会与你比较它的字符串是同一个对象(取决于你正在使用的JVM "foo" == "foo"将是真的,因为它将在内部使用相同的对象).

当你调用.equals()它时(字符串s)运行它自己的逻辑来确定它是同一个对象.在String的情况下,它将逐字符地比较它.

instanceof完全是另一回事,它会告诉你一个对象是否是某种类型对象的实例,例如"foo" instanceof String是真的.