java基础——“==”与equals方法的区别
2014-06-25 09:28
585 查看
==:是用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。
equals方法在下面不同的情况中有些不同。
equals:由于所有的类都是继承自java.lang.Object类的。如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法。Object中的equal方法返回的是"=="的判断。因此"=="和"equal"方法的作用是相同的。都是用来比较其对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。
示例:
输出结果:
equals:String类中重新定义了equals这个方法,比较的是值,而不是地址。
示例:
输出结果:
注意:由于str3和str4是两个字符串常量所生成的变量,其中所存放的内存地址是相等的,所以s3==s4是true
总结:
1.在equals方法没有被重写的情况下,== 和equals的作用是相同的。都是比较变量在内存中的地址。
2.在equals方法重写,例如String中,equals的作用是比较两个变量值,而非地址。==依然比较的是变量在内存中的地址。
参考:http://hi.baidu.com/tp_soon/item/e82449fae3abbe11fe35823b
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方法与“==”的区别
- Java基础之"=="和 和 equals 方法的区别
- Java基础回顾: "=="和equals()方法的区别
- JAVA基础知识回顾(基本数据类型,switch参数,equals与==的区别,Object有哪些公用方法)-1
- Java基础面试题:==和equals方法有何区别?
- java基础之“==” 和equals()方法的区别
- 【JAVA基础小问题】"=="和equals方法有什么区别?
- java基础问题----"=="和equals方法究竟有什么区别
- java基础 3、"=="和equals方法有什么区别
- Java基础——"=="和equals方法究竟有什么区别?
- 【从零开始】Java基础学习记录(二) == 和 equals 方法的区别和使用
- Java中"=="和equals方法的区别!
- java中String 相关及“==”与equals方法区别
- java基础 equals与==区别,String的hashcode
- 【Java基础】JAVA中重写equals()方法为什么要重写hashcode()方法?
- Java 基础一些代码练习笔记(object-equals 方法)
- java中equals方法和“==”的区别
- 【java基础】==与equals()方法比较
- "=="和equals方法究竟有什么区别? —— Java经典面试题系列
- Java ==运算符与equals方法的区别及intern方法的正确使用