您的位置:首页 > 编程语言 > Java开发

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

2014-06-25 09:28 585 查看
 ==:是用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java equals