Java中==号和equals()方法的区别
2017-10-05 12:35
477 查看
Java中==号和equals()方法的区别
共同点:都可以作比较,返回值都是Boolean
区别:
1、 == 是比较运算符,它既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
2、equals方法只能比较引用数据类型,在重写之前,比较的是地址值,底层依赖的是==号,功能等价,但是比较地址值是没有意义的,所以我们需要重写equals()方法比较对象中的属性值
3、引用数据类型
如果相互比较的两个对象是常量,则对象地址值是指向常量池中的常量值,如果值相等,则指向的是同一个常量,所以地址值也想等。
如果相互比较的两个对象中至少有一个是用构造方法创建的,则其地址值指向的是两个不同的对象,所以地址值不想等。
/** *Object中的equals()方法 *功能 :将Object对象的地址值返回 *通俗理解 :没什么卵用,就是给 == 穿了件衣服 */ public boolean equals(Object obj) { return (this == obj); }
如果需要比较引用类型数据中的属性值,则需要重写Object中的equals()方法,比如String类中就重写了该方法
/** *String类中重写了Object中的equals()方法 *功能 :将此String对象与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时(即属性值相同),结果才为 true。 *通俗理解 :比较两String对象中属性值是否相同,与地址无关 */ public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String) anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }
相关文章推荐
- JAVA中==和equals方法的区别
- Java equals 方法和 == 的区别
- java中“==”和equals方法有什么区别
- 【高薪就业必备06】 java中"=="和equals方法究竟有什么区别?
- java equals方法和==的区别
- java中equals方法和“==”的区别
- Java中equals方法和==号的区别
- java基础——“==”与equals方法的区别
- java中equals方法和“==”的区别
- Java基础面试题:==和equals方法有何区别?
- JAVA中“==”与equals()方法区别
- Java中关于==和equal的区别 以及equals()方法重写
- Java中"=="与equals()方法的区别
- java中"=="和equals方法究竟有什么区别?
- java中equals方法和“==”的区别:(转)
- Java ==运算符与equals方法的区别及intern方法的正确使用
- JAVA中“==”与equals()方法区别
- Java中equals方法和"==”运算符的区别
- Java中equals方法、==和hashCode的区别
- Java ==运算符与equals方法的区别及intern方法的正确使用