Java-equals()与 等于等于 的区别

涎涎原创约 765 字大约 3 分钟...JavaJava

115-Java-equals()与==的区别.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

  • 理解equals()方法和==运算符的区别是非常重要的。
    • 默认情况下(即没有被重写时)equals()只能比较引用类型,"=="既能比较引用类型又能比较基本类型。
    • equals()方法从Object类继承,即比较对象引用的值
    • 一般都被子类方法覆盖,不再比较引用的值
  • "=="运算符:
    • 比较基本数据类型:相当于算术等号
    • 比较引用数据类型:比较引用的值,不能被覆盖。

示例代码:

package Object类介绍;

public class TestEquals {

	public static void main(String[] args) {

		/**
		 * Object类的equals方法:
		 * 1.作用:用来比较两个对象是否相等
		 * 2.比较原理:比较两个对象的hashCode
		 */
		Object o1 = new Object();
		Object o2 = new Object();
		
		System.out.println("o1.equals(o2)? " + o1.equals(o2));//false
		
		o2 = o1;
		
		System.out.println("o1.equals(o2)? " + o1.equals(o2));//true 
		
		Double d = new Double(12.345);
		Double a = 12.345;
		double b = 12.345;
		
		Float c = 12.345F;
		
		System.out.println(a.equals(b));//true 类型相同,并且比较的是值
		System.out.println(a.equals(d));//true 类型相同,并且比较的是值
		System.out.println(d.equals(b));//true 类型相同,并且比较的是值
		System.out.println(a.equals(c));//false 类型不同
		System.out.println(c.equals(b));//false 类型不同
		
		Double d2 = new Double(789);
		Double d3 = new Double(789);
		System.out.println("d2 == d3 ?" + (d2 == d3));//false 比较的是地址
		System.out.println(d2.equals(d3));//true
		/**
		 * 比较两个对象是否相等:用equals 和 ==
		 * 注意:
		 * 1.equals只能用来比较对象,因为equals是方法
		 * 2.==既能用来比较对象,又能用来比较基本类型
		 * 3.由于equals方法可以重写,所以不同类型的对象调用equals方法比较用的算法不同
		 * Object类型:equals方法比较的是两个对象的地址,底层调用 hashCode方法获取对象的地址之后再做比较
		 * Double类型:equals方法比较的是值
		 * String类型:euqals方法比较的是字符串的内容
		 * 自己定义的类型,equals方法比较什么可以自己写算法,不写的话比较地址
		 * 
		 * “==” 运算符:
		 * 比较基本数据类型:相当于算术符号
		 * 比较引用数据类型:比较引用的值,不能被覆盖。
		 * 
		 */
		System.out.println(d2 == d3);//false
		System.out.println(d2);
		System.out.println(d3);
		
		String s1 = new String("abc");
		String s2 = new String("abc");
		System.out.println("s1.equals(s2)? " + s1.equals(s2));
		
	}
}

关于此知识点比较优秀的博文

java .equals()和==的区别open in new window

JAVA--equals()和==的区别open in new window

浅谈Java中equals()和==的区别open in new window

java中equals和==的区别是什么-百度经验open in new window

Java 对equals()方法与==的理解及两者的区别open in new window

java中equals()和==的区别open in new window


分割线


相关信息

以上就是我关于 Java-equals()与==的区别 知识点的整理与总结的全部内容,另附源码open in new window

上次编辑于:
贡献者: 涎涎
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.4