前言
Hello,大家好!很开心与你们在这里相遇,我是一个喜欢文字、喜欢有趣的灵魂、喜欢探索一切有趣事物的女孩,想与你们共同学习、探索关于IT的相关知识,希望我们可以一路陪伴~
1.Object类
Object类概述
java.lang.Object
类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时 候,最终找的父类就是Object。如果一个类没有特别指定父类,那么默认则继承自Object类。例如:
public class MyClass {
}
public class MyClass extends Object{}
其中的两个方法
方法名 | 说明 |
---|---|
public String toString() | 返回该对象的字符串表示。 |
public boolean equals(Object obj) | 指示其他某个对象是否与此对象“相等”。 |
toString方法
public String toString()
:返回该对象的字符串表示。toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
-
覆盖重写
如果不希望使用toString方法的默认行为,则可以对它进行覆盖重写。
(在IDEA中我们可以使用快捷键 atl + inset 快速生成toString方法)
例如自定义的Person类
public class Person {
private String name;
private int age;
@Override
public String toString() {
return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
}
// 省略构造器与Getter Setter
}
equals方法
public boolean equals(Object obj)
:指示其他某个对象是否与此对象“相等”。调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定义两种方式。
默认比较方式
如果没有覆盖重写equals方法,那么Object类中默认进行
==
运算符的对象地址比较,只要不是同一个对象,结果必然为false。
重写equals方法
如果希望进行对象的内容比较,即所有指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法。
(在IntelliJ IDEA中,可以使用
Code
菜单中的Generate…
选项,也可以使用快捷键alt+insert
,并选择equals() and hashCode()
进行自动代码生成 )
public class Student extends Object {
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;
}
//直接自动生成即可 alt + insert 生成
@Override
public boolean equals(Object obj) {
// 转换为当前类型
Student s = (Student)obj;
if(this.name.equals(s.name) && this.age == s.age) {
return true;
}else {
return false;
}
}
}
public class StudentDemo {
public static void main(String[] args) {
Student s1 = new Student("yanqi",20);
Stude