==与equals的区别
2013-11-05 19:50
302 查看
==用于比较两个变量的值是否相等,也就是比较两个变量对应的内存中的数值是否相同。当比较两个基本数据类型或判断两个引用变量是否指向同一个对象时,应该采用==操作符。
当一个引用变量指向一个对象类型时,此时涉及到两块内存。一个是对象自身的内存,另一个是这个变量的内存。比如Object o = new Object();new Object()是一块内存,而这个变量o是另一块内存,其保存的值就是这个对象所占用的内存的首地址。因此如果要判断两个引用变量是否指向同一个对象时,应该采用==操作符。
equals用于比较两个独立对象的内容是否相同。比如如下代码:
String a = new String("abc");
String b = new String("abc");这里a 指向一块内存,而b指向另一块内存。因此表达式a==b将返回false。而a.equals(b)返回true,因为a、b所指向的两个内存空间的内容是相同的。
当我们自定义了某个类,但没有重写Object的equals方法时,会默认采用Object的equals方法。Object的equals方法内部其实是采用==操作符的。也就是说如果我们创建了这个类的两个相同内容的实例对象,即便我们使用equals方法进行比较,也会返回false。所以我们应该根据实际需要重写这个方法。
当一个引用变量指向一个对象类型时,此时涉及到两块内存。一个是对象自身的内存,另一个是这个变量的内存。比如Object o = new Object();new Object()是一块内存,而这个变量o是另一块内存,其保存的值就是这个对象所占用的内存的首地址。因此如果要判断两个引用变量是否指向同一个对象时,应该采用==操作符。
equals用于比较两个独立对象的内容是否相同。比如如下代码:
String a = new String("abc");
String b = new String("abc");这里a 指向一块内存,而b指向另一块内存。因此表达式a==b将返回false。而a.equals(b)返回true,因为a、b所指向的两个内存空间的内容是相同的。
当我们自定义了某个类,但没有重写Object的equals方法时,会默认采用Object的equals方法。Object的equals方法内部其实是采用==操作符的。也就是说如果我们创建了这个类的两个相同内容的实例对象,即便我们使用equals方法进行比较,也会返回false。所以我们应该根据实际需要重写这个方法。
相关文章推荐
- Java中equals和==的区别
- Java:String使用equals和==比较的区别(转)
- java 中"=="与equals()方法的区别
- C#中 Reference Equals, == , Equals的区别
- java中instanceof跟equals和equalsIgnoreCase的区别
- Java equals与==的区别
- Java中equals和==的区别
- 细说java面试“=="和"equals"方法的区别以及常量池的概念及使用
- java中equals和==的区别
- Java中equals和==的区别
- java中equals和==的区别
- equals和==的区别及详解
- java中equals和==的区别
- “==”运算符和 equals 方法的区别
- equals方法变量和常量位置区别
- == 和 equals的区别
- Java之"=="和equals的区别
- equals 与equalsIgnoreCase的区别
- equals()和==的区别?
- hashCode、equals、==三者的区别与联系