Objects类
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));
}
Object类
本文笔记,参考java课程图文
0.背景介绍
java.lang.Object
类是Java语言中的根类,即所有类的父类,可以理解为老父亲一样的存在- 没有指定父类的类都默认继承Object类
public class NonClass /*extends Object*/ {
//...
}
1.toString方法
public String toString()
:返回该对象的字符串表示
字符串内容:对象的类型+@+内存地址值
返回的结果:内存地址
直接使用输出语句输出对象名:通过该对象调用了其toString()方法
开发中需要重写:按照对象的属性得到相应的字符串
覆盖重写toString方法:
1.手动重写
Person类 两个属性:name 和age
public class Person {
private String name;
private int age;
@Override
public String toString() {
return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
}
// 省略构造器与Getter Setter
}
2.自动重写:IntelliJ IDEA
在Code
菜单中右击,Generate...
,也可以使用快捷键alt+insert
,点击toString()
选项。选择需要包含的成员变量并确定
2.equals方法
public boolean equals(Object obj)
:其他某个对象是否与此对象“相等”
参数:另一个对象
目的:判断两个对象是否相同
返回值:布尔类型 true or false
- 默认比较方式:Object类中默认用
==
运算符比较对象地址 ==> 只要不是同一个对象,就是fasle - 覆盖重写equals方法:比较两个对象的内容
1.手动重写
import java.util.Objects;
public class Person {
private String name;
private int age;
/*
1.对象地址相同,证明同一个对象 == > 相同
2.参数为空,类型信息不同 ==> 不同
3.把传入的参数转换为当前类型(即Person类)
4.基本类型相等,将引用类型交给
java.util.Objects类的equals静态方法(不用)
取用结果
*/
@Override
public boolean equals(Object o) {
// 如果对象地址一样,则认为相同
if (this == o)
return true;
// 如果参数为空,或者类型信息不一样,则认为不同
if (o == null || getClass() != o.getClass())
return false;
// 转换为当前类型
Person person = (Person) o;
/* 要求基本类型相等,并且将引用类型交给
java.util.Objects类的equals静态方法取用结果
age属性值相同且name属性值相同
*/
return age == person.age && Objects.equals(name, person.name);
}
}
2.自动重写:
IntelliJ IDEA中,右击Code
部分,点击Generate…
选项,也可以使用快捷键alt+insert
,并选择equals() and hashCode()
进行自动代码生成