Object类

Object类

类中的方法

hashCode()/toString()/equals()这三个方法时我们今后在做项目时经常要调用的方法,尤其是在编写一个标准的Java类之后,我们常常重写这三个方法,标准的Java类又称为JavaBean,
JavaBean的要求:
1.所有成员变量的访问权限:private
2.为每一个成员变量设置一对getter和setter
3.设置一个无参数和全参构造

Person类

package SE01.n1Object;

public class Person {
	private String name;
	private int age;
	public String getName() {//为属性设置getter和setter
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Person(String name, int age) {//有参构造
		super();
		this.name = name;
		this.age = age;
	}
	public Person() {//无参构造
		super();
	}
	@Override
	public String toString() {//重写toString
		return "Person [name=" + name + ", age=" + age + "]";
	}
	@Override
	public int hashCode() {//重写hashCode
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {//重写Equals
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
}

Test类

public static void main(String[] args) {

			Person p=new Person("王五",12);
			System.out.println(p.toString());
			p.setName("张三");
			p.setAge(123);
			System.out.println(p.toString());
			System.out.println(p.getAge());
			System.out.println(p.getName());
			System.out.println(p.hashCode());
			System.out.println(p);
			
			
		/*
		 * 看一个类是否重写toString,直接打印这个类的对象即可,如果没有重写toString(),那么打印的是对象的
		 * 类文件名全称@十六进制哈希吗
		 * 
		 */
			Scanner sc=new Scanner(System.in);
			System.out.println(sc);
			//重写toString
			
			Random r=new Random();
			System.out.println(r);
			//没有重写toString
			
			ArrayList list=new ArrayList();
			list.add(1);
			list.add(2);
			System.out.println(list);
			//重写toString
			
		}

Equals方法


package SE01.n1Object;

public class Demo02Equals {
	Person p1=new Person("小明",18);
	Person p2=new Person("小白",19);
	Person p3=new Person("小明",18);
	public static void main(String[] args) {
		Demo02Equals d=new Demo02Equals();
		System.out.println(d.p1.equals(d.p2));//false
		System.out.println(d.p1.equals(d.p3));//true
		Person p1=new Person("小明",18);
		Person p2=new Person("小白",19);
		Person p3=new Person("小明",18);
		System.out.println(p1.hashCode());//hashCode=758222
		System.out.println(p3.hashCode());//hashCode=758222
		//由于Person类重写了hashCode()方法,所以p1和p3的hashCode值相等
		System.out.println(p1.equals(p2));//false
		System.out.println(p1.equals(p3));//true
		//由于Person类重写了equals()方法,当两个引用的属性完全相同的时候,会返回true
		//默认是比较地址是否相同,很多时候并不符合业务需求,需要重写
//		▲equals()和==的区别
//		==可以用于比较基本数据类型的值(最小数据单元)
//		(对于基本数据类型:相同就是相等,相等就是相同)
		System.out.println(p1==p1);//true
		System.out.println(p1.equals(p1));//true
//		equals()只能比较两个对象是否相等
//		(对于引用数据类型,相等不一定相同)
		System.out.println(p1==p3);//false
		System.out.println(p1.equals(p3));//true
	}
}

©️2020 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值