关于equals跟==的对比

一个例子:

public class A{

public static void main(String[] args){

String str="xx",str2=new String("xx");

if (str.equals(str2))
System.out.println("equals");
else
System.out.println("not equals");
if (str == str2)
System.out.println("==");
else
System.out.println("not ==");

}

}

运行结果如下:

equals

not==

"=="比较的是str与str2是否指向同一个引用,而"equals"比较的则是str与str2是否是相同的值。


在java中,正确使用equals遵循一下几个要素:

1、自反性:对任意x,x.equals(x)一定返回true

2、对称性:对任意x,y,如果x.equals(y)返回true,那么y.equals(x)一定返回true
3、传递性:对任意x,y,z,如果x.equals(y)=true,y.equals(z)=true,那么一定有x.equals(z)=true
4、一致性:对任意x,y,如果对象中用于比较的信息没有改变,那么无论做多少次x.equals(y),返回的值应该一致
5、对任意非null的x,x.equals(null)一定返回false

需要注意的是:
String str=xx;
如果用str=="xx"或者"xx"==str功能相同。
但是如果用str.equals("xx")跟"xx".equals(str)就有很大的区别,因为str.equals("xx")可能导致空指针异常,所以推荐使用"xx".equals(str)进行比较。
如下例子:
public class A{

public static void main(String[] args){

String str=null;
if(str.equals("xx"))

System.out.println("equals");

}

}
运行结果:
Exception in thread "main" java.lang.NullPointerException
at Test.main( Test.java:4 )



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值