Java 常用api之object 的equals方法

这个最主要还是重写,读代码完事儿!!

以下是我奉献的代码,仔细阅读就明白了

objectdemo类

package object_equals方法;

public class objectdemo {
	public static void main(String[] args) {
		student s1 =new student();
		s1.setName("林青霞");
		s1.setAge(30);
		System.out.println(s1);
		
		student s2 =new student();
		s2.setName("林青霞");
		s2.setAge(30);
		System.out.println(s2);
		
		//需求,比较两个对象内容是否相同
		System.out.println(s1==s2);  //这种方式比较的是s1与s2的地址值,又因为这俩s都是new出来的,所以地址值不相同
		//返回值为false,,重写之后返回值为ture
		
		
		System.out.println(s1.equals(s2));  //向上转型  父类引用子类对象
		//返回值还是flase
		
		//equal返回还是flase的原因,所以看到的还是地址的比较,像哟不这么去比较,就必须在类里面重写equals方法
		//equals的底层源码
		
//		 public boolean equals(Object obj) {
		         //谁调用这个方法谁就this----s1
		         //obj 就是s2
//		        return (this == obj);
//		    }
		
		
		
	}

}

student类

package object_equals方法;

import java.util.Objects;

public class student {
	private String name;
	private int age;
	/**
	 * @param name
	 * @param age
	 */
	public student(String name, int age) {
		this.name = name;
		this.age = age;
	}
	/**
	 * 
	 */
	public student() {
		super();
	}
	
	
	/**
	 * @return name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name 要设置的 name
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return age
	 */
	public int getAge() {
		return age;
	}
	/**
	 * @param age 要设置的 age
	 */
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "student [name=" + name + ", age=" + age + "]";
	}
	
	@Override
	public boolean equals(Object obj) {
		//this----s1
		//obj-----s2
		if (this == obj) //判断s1与s2的地址值
			return true;
		if (obj == null)//判断s2的是否为空值
			return false;
		if (getClass() != obj.getClass())//判断s1与s2的字节码文件是否一致,也就是在不在一个类
			return false;
		student other = (student) obj;
		return age == other.age && Objects.equals(name, other.name);
	}
	
	

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想给世界留下 1bite 的印象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值