java-Object类、toString类、equals方法、finalize
Object类
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。
每个类会直接或者间接的继承Object类
int hashCode() 返回内存地址
getClass().getName() 返回当前类的名字
public class StudentTest {
public static void main(String[] args) {
Student s=new Student();
// int hashCode() 返回该对象的哈希码值。
//哈希算法 地址 返回该对象的地址 1982791261
System.out.println(s.hashCode());
//返回当前类的名字
System.out.println(s.getClass().getName());
}
}
toString方法
Object下toString( )方法:用于取得对象信息,返回对象的字符串表示
package lulux;
public class StudyTestDemo1 {
private String name;
private int age;
public StudyTestDemo1(String name, int age) {
this.name = name;
this.age = age;
}
}
class Test{
public static void main(String[] args) {
StudyTestDemo1 stu = new StudyTestDemo1("熊大聪明",3);
System.out.println(stu);//输出内存中的字符串地址
}
}
使用对象直接输出的时候默认输出的是一个对象在堆内存上的地址值;若要输出该对象的内容,则要重写toString( )方法
package lulux;
public class StudyTestDemo1 {
private String name;
private int age;
public StudyTestDemo1(String name, int age) {
this.name = name;
this.age = age;
}
/*重写toString*/
@Override
public String toString() {
return "StudyTestDemo1{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
class Test{
public static void main(String[] args) {
StudyTestDemo1 stu = new StudyTestDemo1("熊大聪明",3);
System.out.println(stu);//输出重写后的tostring( )
}
}
equals方法
==和equals的区别
==:
如果是基本数据类型比较的是值
如果是引用数据类型比较的是地址
equals:
默认比较的是地址
我们可以重写让它比较成员变量的值
//equals方法的作用: 是比较两个对象是否相等
//但是从Object继承的equals方法默认比较的是内存地址 开发中无意义
//重写比较成员变量的值
public class StudentTest2 {
public static void main(String[] args) {
//如果==是基本数据类型比较的是值
int a=10;
int b=10;
System.out.println(a==b);
//如果==是引用数据类型比较的是地址
Student s1=new Student(21, "奥力给");//0x001
Student s2=new Student(21, "奥力给");//0x002
System.out.println(s1==s2);//false
Student s3=s1;//Student s3=x001
System.out.println(s3==s1);//true
//我们在实际开发中,比较两个对象是否相等不是看内存地址
//而是看他们的属性是否一致,如果一致就相等
//比较两个对象是否相等
//boolean equals(Object obj)
//指示其他某个对象是否与此对象"相等"。
//false 0x001
// public boolean equals(Object obj) {0x002
// return (this 0x001 == obj);
// }
// public boolean equals(Object s2) {
// return (s1 == s2);
// }
//重写了equals方法 比较属性的值 完全一样 返回true
System.out.println(s1.equals(s2));//true
}
}
finalize
protected void finalize() 垃圾回收器回收对象的时候会调用此方法
public static void main(String[] args) {
aa();
//static void gc()
//运行垃圾回收器
System.gc();
}
public static void aa() {
Student s=new Student();
}
}