Object
是Java中的顶级父类,所有的类直接或间接的继承于Object类。
Object常用的成员方法:
1. toString方法
public class Main {
public static void main(String[] args) {
Object obj = new Object();
String str = obj.toString();
System.out.println(str); // 输出:java.lang.Object@1eb44e46
}
}
1eb44e46
对象的内存地址。
打印任何对象,打印的都是这个对象的内存地址:
比如下面是Student的JavaBean:
public class Student {
private String name;
private Integer age;
public Student() {
}
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
Student stu = new Student("akbar", 24);
String str = stu.toString(); // toString是stu父类Object的成员变量
System.out.println(str); // 输出:Student@6504e3b2
}
}
但是地址值对我们来说是没有意义的,怎么解决?
我们只要重写一下父类Object中的toString方法就可以了:
public class Student {
private String name;
private Integer age;
public Student() {
}
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
}
public class Main {
public static void main(String[] args) {
Student stu = new Student("akbar", 24);
String str = stu.toString();
System.out.println(str);
}
}
输出:
Student{name='akbar', age=24}
2. equals方法
public class Main {
public static void main(String[] args) {
Student stu1 = new Student("akbar", 24);
Student stu2 = new Student("saipulla", 14);
boolean equals = stu1.equals(stu2);
System.out.println(equals);
}
}
输出:false
。
上面的代码中stu1调用的就是父类Object中的方法equals。但是要注意,这个equals比较的是两个对象的地址值,不是属性值,如果需要比较属性值,需要重写父类Object的equals方法:
然后一致点next就可以自动生成equals方法。