equals和==的区别

String a="abc";
		 String b="abc";
		 String c=new String("abc");
		 String d=new String("abc");
		 System.out.println(a==b);//true
		 System.out.println(a.equals(b));//true
		 System.out.println(c==d);//false
		 System.out.println(c.equals(d));//true
		 System.out.println(a.equals(d));//true
		 System.out.println(a==d);//false

这里解释一下为什么:

==操作符专门用来比较两个变量的值是否相等,Equals方法是用于比较两个独立的对象的内容是否相同

Java虚拟机里有一个区域叫做方法区,方法区有一个常量区,当你定义String a="abc";时,虚拟机认为"abc"是常量,放在常量区。下次再定义 String b="abc";时,虚拟机并不创建任何东西,而是连到刚才常量区的"abc",所以不管是equals==都是true.因为地址和值都相等。

另外还有一个区域叫做堆,如果定义String c=newString("abc");虚拟机会把创建对象放到堆里,再定义 String d=new String("abc");时会在堆里放两个对象。所以==false,equalstrue.因为两个对象地址不同内容相同。而a.equals(d)true,a==dfalse也是因为地址不同内容相同。

以上:

1、如果测试两个简单类型的数值是否相等,则一定要用“==”来比较;

2、如果要比较两个引用变量对象的值是否相等,则要用对象的equals()方法进行比较;

3、如果需要比较两个引用变量是否指向同一对象,则使用“==”来进行比较;

4、对于自定义的类,应该根据情况覆盖其父类或Object类中的equals()方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值