[1] Object class: ancestor class, parent class of all classes, indirect parent class
[2] hashcode
[7] [8] GC: automatic garbage collection (the memory space requested by the programmer will be automatically recycled by the JVM). What kind of objects will be garbage collected? 1. The object is unreachable 2. It cannot be referenced 3. It is out of scope
User class
package com.cao.lesson.test4;
public class User {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
//【6】
@Override
public String toString() {
return "name:"+name+"\t"+"age:"+age;
}
// 【7】垃圾回收的 方法 finalize() JVM会自动调用 所有java有自动垃圾回收的机制
@Override
protected void finalize() throws Throwable {
System.out.println("垃圾已经回收...");
super.finalize();
}
}
Student class
public class Student {
//【8】
@Override
protected void finalize() throws Throwable {
System.out.println("Student已经被回收...");
super.finalize();
}
}
package com.cao.lesson.test4;
public class Test {
public static void main(String[] args) {
//Object类:始祖类, 所有类的父类、间接父类
Object obj = new Object();
// getClass(); 获取类的全名称
System.out.println(obj.getClass());
User user=new User();
//【1】输出User类的父类(object类)
System.out.println(user.getClass().getSuperclass());
// int hashCode(); 获取对象的 hash值, hashCode (对象的JVM内存地址对应的 int 值)
/*
对于hash值的计算
整数类型(扩展、重写了 hashCode):它的字面量
float,double(扩展、重写了 hashCode): 其他算法, 确保同一类型下 不同的字面量具有不同的 hashCode值
String的hashCode比较特殊:存在hash碰撞
*/
System.out.println(user.hashCode());// 【2】调用了父类的 的 hashCode 方法
//【3】
System.out.println("aa".hashCode());
//【4】
System.out.println(Integer.hashCode(2));
//【5】
System.out.println(Double.hashCode(6.66));
// toString(); 看作是内存地址, 在对象输出的时候默认调用 toString()
//【6】重写toString方法
user.setName("cao");
user.setAge(22);
System.out.println(user.toString());
// 垃圾回收的 方法 finalize() JVM会自动调用 所有java有自动垃圾回收的机制
Test test=new Test();
test.show(); // 超出了作用域的范围就会被回收
// 【7】GC:自动垃圾回收(程序员申请的内存空间JVM会自动回收)
// 什么样对象会被垃圾回收: 对象不可达 ,无法引用
user=null;
System.gc();
}
//【8】 超出了作用域的范围就会被回收
public void show(){
Student student=new Student();
}
}
operation result:
class java.lang.Object
【1】class java.lang.Object
【2】2133927002
【3】3104
【4】2
【5】1244124019
【6】name:cao age:22
【7】Student已经被回收...
【8】垃圾已经回收...