java 值 equals 和==的区别

==  可以比较的数据类型:

  • 基本数据类型(也称原始数据类型) 应用双等号(==),比较的是他们的值。
  • 引用数据类型:当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址(确切的说,是堆内存地址)。

equals方法可以比较的数据类型:

  • 只能比较引用数据类型,在没有重写的情况下默认情况下还是比较数据的内存地址。所以我们要重写该方法。
  • JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了

重写equalsf方法主要事项:

  • 先判断传入进来的类是是不是自己,是就可以直接返回
  • 在判断传入进来的类是不是本类创建对象的。使用  对象名 instanceof 类名 查看。
  • 在把类名向下转型,最后在返回比较结果

注意事项:我们一般都使用自动生成的equals 方法

@Override
	public boolean equals(Object obj) {  // 这是系统自动生成的
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		demo01 other = (demo01) obj;
		if (age != other.age)
			return false;
		return true;
	}

猜你喜欢

转载自blog.csdn.net/weixin_44462792/article/details/86568404