【java】Object类

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值