Object类
创建Person01
public class Person01 { private String nickname; private int age; private int gender; public Person01() { } public Person01(String nickname, int age, int gender) { this.nickname = nickname; this.age = age; this.gender = gender; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } }
创建测试类
public class Person01Test { @Test public void test01(){ Person01 person01 = new Person01(); System.out.println(person01); } @Test public void test02(){ Person01 person01 = new Person01(); System.out.println(person01.toString()); } }
运行结果
com.lihaozhe.bean.Person01@1e4a7dd4
实际上调用的是toString方法
父类是ObjectJava
Object 类是所有类的父类,也就是说Javade的所有类都继承了Object,子类可以使用Object 的所有方法
重写toString方法
创建Person02
public class Person02 { private String nickname; private int age; private int gender; public Person02() { } public Person02(String nickname, int age, int gender) { this.nickname = nickname; this.age = age; this.gender = gender; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } @Override public String toString() { return "Person02(nickname = " + this.nickname+",age = "+this.age +",gender"+this.gender+ ")"; } }
创建Person02的测试类Person02Test
public class Person02Test { @Test public void test01(){ Person02 person02 =new Person02(); System.out.println(person02); } @Test public void test02(){ Person02 person02 =new Person02("墨临渊",19,1); System.out.println(person02); } }
运行结果
Person02(nickname:墨临渊,age = 40, gender =1)
Object的hasCode
创建Person03
public class Person03 { private String nickname; private int age; private int gender; public Person03() { } public Person03(String nickname, int age, int gender) { this.nickname = nickname; this.age = age; this.gender = gender; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } @Override public int hashCode() { return super.hashCode(); } }
创建Person03的测试类Person03Test
blic class Person03Test { @Test public void test01(){ Person03 person03 =new Person03(); System.out.println(person03.hashCode()); System.out.println(Integer.toHexString(Person03.hasCode())); System.out.println(person03.toString()); } }
运行结果
1330754528 4f51b3e0 com.lihaozhe.bean.Person03@4f51b3e0
重写Object类的equals方法
沿用Person03
创建Person03Test中的test02
@Test public void test02(){ Person03 person01 =new Person03("墨临渊",19,1); Person03 person02 =new Person03("墨临渊",19,1); System.out.println(person01==person02); System.out.println(person01.equals(person02)); }
运行结果
false false
重写equals方法
创建Person04
public class Person04 { private String nickname; private int age; private int gender; public Person04() { } public Person04(String nickname, int age, int gender) { this.nickname = nickname; this.age = age; this.gender = gender; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } @Override public boolean equals(Object obj) { //传进来的被比较的对象 Person04 person04 = (Person04) obj; if(this.age!=person04.getAge()){ return false; }else if(this.gender!= person04.getGender()){ return false; }else if(!Objects.equals(this.nickname,person04.getNickname())){ return false; }else{ return true; } } }
创建Person04Test
public class Person04Test { @Test public void test01(){ Person04 person01 =new Person04("墨临渊",19,1); Person04 person02 =new Person04("墨渊",18,0); System.out.println(person01==person02); System.out.println(person01.equals(person02)); } @Test public void test02(){ Person04 person01 =new Person04("墨临渊",19,1); Person04 person02 =new Person04("墨临渊",19,1); System.out.println(person01==person02); System.out.println(person01.equals(person02)); } }
运行结果
false false false trun
重写Object类的hasCode方法
创建Person05
public class Person05 { private String nickname; private int age; private int gender; public Person05() { } public Person05(String nickname, int age, int gender) { this.nickname = nickname; this.age = age; this.gender = gender; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } @Override public boolean equals(Object obj) { //传进来的被比较的对象 Person05 person04 = (Person05) obj; if(this.age!=person04.getAge()){ return false; }else if(this.gender!= person04.getGender()){ return false; }else if(!Objects.equals(this.nickname,person04.getNickname())){ return false; }else{ return true; } } @Override public int hashCode() { int reference = 31; return this.age*(this.gender + reference)+ this.nickname.hashCode(); } }
创建Person05Test
public class Person05Test { @Test public void test(){ Person05 person01 =new Person05("墨临渊",19,1); Person05 person02 =new Person05("墨渊",18,0); Person05 person03 =new Person05("墨临渊",19,1); System.out.println(person01.hashCode()); System.out.println(person02.hashCode()); System.out.println(person03.hashCode()); } }
运行结果
26247414 842130 26247414