Java笔记-Object类

该笔记于学习黑马程序员java课程时记录。

一、概述

java.lang.Object类是Java语言中的根类,即是所有类的父类。所有类对Object类都有继承关系,Object类中的所有方法子类也都可以使用,在对象实例化的时候,最终找的父类也是Object。

二、主要方法

Object类在API文档中共有11个方法,我们日常主要用到toString()equals()方法

1、toString方法

①方法声明:

public String toSring(); // 返回该对象的字符串表示形式

默认的对象的字符串表示也就是对象的类型+@+内存地址值,而我们在实现其他类的过程往往需要根据对象的属性改变字符串的表达形式,因此就需要覆盖重写它。

②覆盖重写:

例如重写一个Student类中的toString()方法。

public class Student{
    private String name;
    private int id;
    private int age;

    @Override
    public String toString(){
        return "name=" + name + ", age=" + age + ", id=" + id;
    }
/* Geter/Seter
    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

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

2、equals方法

①方法声明:

调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。

public boolean equals(Object obj); // 比较两个对象是否相同

如果没有覆盖重写equals方法,则执行Object类中默认的==运算符对两对象的地址进行比较,如果地址相同返回true,不同返回false。

②覆盖重写:

如果希望对具体对象的内容进行比较来判断两个对象是否相同则需要覆盖重写equals方法。例如对于Student类:

public class Student{
    public String name;
    public int id;
    public int age;

    @Override
    public boolean equals(Object s){
        if(this == s) return true; // 如果对象地址相同,则认为两对象相同

        Student stu = (Student) s; // 把当前类型转换成Student类型
        return this.age == stu.age &&
                this.name.equals(stu.name) &&
                this.id == stu.id;
    }
}

三、Objects类

import java.util.Objects

JDK7中添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。

在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题。方法如下:

public static boolean equals(Object a, Object b) // 判断两个对象是否相等。

源码实现:

public static boolean equals(Object a, Object b) {
	return (a == b) || (a != null && a.equals(b));
}

另外还有

public static boolean nonNull(Object o);// 用于判断对象是否为null,不是返回true,否则返回false
// 与之对应
public static boolean isNull(Object o); // 与其相反
public static <T> T requireNonNull(T o); //检查对象o不为null,如果为null,则抛出空指针异常,否则返回o本身

具体查阅API文档

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值