java基础——“==”与equals方法的区别

 ==:是用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。

equals方法在下面不同的情况中有些不同。

 

一、对于非字符串变量:

==判断两个对象的地址是否相同

equals:由于所有的类都是继承自java.lang.Object类的。如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法。Object中的equal方法返回的是"=="的判断。因此"==""equal"方法的作用是相同的。都是用来比较其对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。

 

示例:

public class TestOperator{
	public static void main(String[] args){
		A obj1 = new A();
		A obj2 = new A();

		System.out.println("==比较:"+(obj1 == obj2));
		System.out.println("equal比较:"+ obj1.equals(obj2));

		obj1 = obj2;

		System.out.println("==比较:"+(obj1 == obj2));
		System.out.println("equal比较:"+ obj1.equals(obj2));
	}
}

class A{
	
}

输出结果:                                

               

 

二、对于字符串变量:

==:判断两个对象的地址是否相同

equals:String类中重新定义了equals这个方法,比较的是值,而不是地址。

 

示例:

public class TestOperator1{
	public static void main(String[] args){
		String str1 = new String("str");
		String str2 = new String("str");

		System.out.println("==比较:" + (str1 == str2));
		System.out.println("equal比较:" + str1.equals(str2));

		String str3 = "str1";
		String str4 = "str1";

		System.out.println("==比较:" + (str3 == str4));
		System.out.println("equal比较:"+(str3.equals(str4)));
	}
}

输出结果:

               

 

注意:由于str3和str4是两个字符串常量所生成的变量,其中所存放的内存地址是相等的,所以s3==s4是true

 

总结:

1.在equals方法没有被重写的情况下,== 和equals的作用是相同的。都是比较变量在内存中的地址。

2.在equals方法重写,例如String中,equals的作用是比较两个变量值,而非地址。==依然比较的是变量在内存中的地址。

 

参考:http://hi.baidu.com/tp_soon/item/e82449fae3abbe11fe35823b

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值