【Java常用类】Object中的方法

Object类

Object是Java类库中的一个特殊类,也是所有类的父类,Object类位于java.lang包中,编译时会自动导入导入,当一个类被定义后,如果没有指定继承的父类,那么默认父类就是Object类。

Object类中常用方法

1.getClass()

它返回引用存储类型的实际对象类型,通常用于判断两个引用中的实际存储对象的类型是否一致。

首先新建一个Student类,定义两个属性name和age,进行有参和无参构造以及get、set方法

package com.common.object;
import java.util.Objects;
public class Student {
    private String name;
    private int age;
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    }
}

测试类:

package com.common.object;
public class TestStudent {
    public static void main(String[] args) {
        //getClass方法
        Student s1=new Student("haojiale",20);
        Student s2=new Student("zhangsan",18);
        //判断s1和s2是不是同一类型
        Class class1=s1.getClass();
        Class class2=s2.getClass();
        if(class1==class2){
            System.out.println("s1和s2属于同一个类型");
        }else{
            System.out.println("s1和s2不属于同一个类型");
        }
    }
}

2.hashCode()

它的返回值时hashCode值,哈希值时根据对象地址或字符串或数字使用hash算法计算出来的int类型的数值

学生类同上面例子一样。(Student类)

测试类:

package com.common.object;
public class TestStudent {
    public static void main(String[] args) {
        Student s1=new Student("haojiale",20);
        Student s2=new Student("zhangsan",18);
        //hashCode方法
        System.out.println(s1.hashCode());
        System.out.println(s2.hashCode());
        Student s3=s1;
        System.out.println(s3.hashCode());
    }
}

在这里s3和s1的哈希值一样
在这里插入图片描述

3.toString()

返回的是对象的字符串表示

学生类:

package com.common.object;
import java.util.Objects;
public class Student {
    private String name;
    private int age;
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" + "name='" + name + '\'' + ", age=" + age + '}';
    }
    }
}

测试类:

package com.common.object;
public class TestStudent {
    public static void main(String[] args) {
        Student s1=new Student("haojiale",20);
        Student s2=new Student("zhangsan",18);
        //toString方法
        System.out.println(s1.toString());
        System.out.println(s2.toString());
    }
}

通过使用toString()来实现显示对象的各个属性值,但是必须要重写toString方法输出结果,如果不重写toString方法输出的就是一串字符串。
在这里插入图片描述

在这里插入图片描述
4.equals()

它是用于比较两个对象的地址是否相同

Student类同上

测试类:

package com.common.object;
public class TestStudent {
    public static void main(String[] args) {
        Student s1=new Student("haojiale",20);
        Student s2=new Student("zhangsan",18);
        //equals方法,判断两个对象是否相等
        System.out.println(s1.equals(s2));//false
    }
}

判断两个Java对象的内容是否相等不能直接用equals方法,要子类重写equals方法

Student类:

package com.common.object;

import java.util.Objects;

public class Student {
    private String name;
    private int age;
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public boolean equals(Object obj) {
        //1判断两个对象是否是同一个引用
        if (this==obj){
            return true;
        }
        //判断obj是否为null
        if (obj==null){
            return false;
        }
        //判断是否是同一个类型
        if (obj instanceof Student){
            //强制类型转换
            Student s=(Student)obj;
            //比较属性
            if (this.name.equals(s.getName())&&this.age==s.getAge()){
                return true;
            }
        }
        return false;
    }
}

测试类:

package com.common.object;
public class TestStudent {
    public static void main(String[] args) {
        //equals方法,判断两个对象是否相等
        Student s4=new Student("小明",17);
        Student s5=new Student("小明",17);
        System.out.println(s4.equals(s5));//true
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值