javaSE_16_API文档概述丶Object 类
2021-04-24 01:29
                         标签:ash   回车   结果   rgs   equals   nali   lan   场景   this     java.lang.Object类是类层次结构的根(父)类。每个类(Person,Student...)都使用 Object 作为超(父)类。所有对象(包括数组)都实现这个类的方法。 根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。 toString方法:public String toString() 覆盖重写 :如果不希望使用toString方法的默认行为,则可以对它进行覆盖重写。在IntelliJ IDEA中,可以点击 Code 菜单中的 Generate... ,也可以使用快捷键 alt+insert ,点击 toString() 选 项。选择需要包含的成员变量并确定。举例: equals方法 :public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。SUN公司设计equals方法的目的是什么?以后编程的过程当中,都要通过equals方法来判断两个对象是否相等。equals方法是判断两个对象是否相等的。调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定义两种方式。 默认地址比较 对象内容比较 重写equals方法的场景: 大多数IDE都可以自动生成equals方法的代码内容。在IntelliJ IDEA中,可以使用 Code 菜单中的 Generate… 选项,也可以使用快捷键 alt+insert ,并选择 equals() and hashCode() 进行自动代码生成。举例: 小结: finalize方法 垃圾回收器(Garbage Collection),也叫 GC,垃圾回收器主要有以下特点: hashCode方法:public native int hashCode(); 这个方法不是抽象方法,带有native关键字,底层调用C++程序。hashCode()方法返回的是哈希码:实际上就是一个java对象的内存地址,经过哈希算法,得出的一个值。所以hashCode()方法的执行结果可以等同看做一个java对象的内存地址。 javaSE_16_API文档概述丶Object 类 标签:ash   回车   结果   rgs   equals   nali   lan   场景   this    原文地址:https://www.cnblogs.com/wurengen/p/13264640.htmlAPI概述
API使用步骤
Object类
public class MyClass /*extends Object*/ { // ... }
其中的常用的方法有:
public class Person {
    private String name;
    private int age;
 
    @Override
    public String toString() {
        return "Person{" + "name=‘" + name + ‘\‘‘ + ", age=" + age + ‘}‘;
    }
    // 省略构造器与Getter Setter 
}
import java.util.Objects;
 
public class Person {
    private String name;
    private int age;
 
    @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静态方法取用结果
 
        return age == person.age && Objects.equals(name, person.name);
    }
}
/*
    关于Object类中的finalize()方法。
        1、在Object类中的源代码:
            protected void finalize() throws Throwable { }
            GC:负责调用finalize()方法。
        2、finalize()方法只有一个方法体,里面没有代码,而且这个方法是protected修饰的。
        3、这个方法不需要程序员手动调用,JVM的垃圾回收器负责调用这个方法。
        不像equals toString,equals和toString()方法是需要你写代码调用的。
        finalize()只需要重写,重写完将来自动会有程序来调用。
        4、finalize()方法的执行时机:
            当一个java对象即将被垃圾回收器回收的时候,垃圾回收器负责调用
            finalize()方法。
        
        5、finalize()方法实际上是SUN公司为java程序员准备的一个时机,垃圾销毁时机。
        如果希望在对象销毁时机执行一段代码的话,这段代码要写到finalize()方法当中。
        6、静态代码块的作用是什么?
            static {
                ....
            }
            静态代码块在类加载时刻执行,并且只执行一次。
            这是一个SUN准备的类加载时机。
            finalize()方法同样也是SUN为程序员准备的一个时机。
            这个时机是垃圾回收时机。
        7、提示:    
            java中的垃圾回收器不是轻易启动的,
            垃圾太少,或者时间没到,种种条件下,
            有可能启动,也有可能不启动。
*/
public class Test06{
    public static void main(String[] args){
        /*
        // 创建对象
        Person p = new Person();
        // 怎么把Person对象变成垃圾?
        p = null;
        */
        
        // 多造点垃圾
        
        for(int i = 0; i ){
            Person p = new Person();
            p = null;
            // 有一段代码可以建议垃圾回收器启动。
            if(i % 2 == 0){
                System.gc(); // 建议启动垃圾回收器。(只是建议,可能不启动,也可能启动。启动的概率高了一些。)
            }
        }        
    }
}
// 项目开发中有这样的业务需求:所有对象在JVM中被释放的时候,请记录一下释放时间!!!
// 记录对象被释放的时间点,这个负责记录的代码写到哪里?
// 写到finalize()方法中。
class Person{
    // 重写finalize()方法
    // Person类型的对象被垃圾回收器回收的时候,垃圾回收器负责调用:p.finalize();
    protected void finalize() throws Throwable {
        // this代表当前对象
        System.out.println(this + "即将被销毁!");
    }
}
public class Test07{
    public static void main(String[] args){
        Object o = new Object();
        int hashCodeValue = o.hashCode();
        // 对象内存地址经过哈希算法转换的一个数字。可以等同看做内存地址。
        System.out.println(hashCodeValue); //798154996
        MyClass mc = new MyClass();
        int hashCodeValue2 = mc.hashCode();
        System.out.println(hashCodeValue2); //1392838282
        MyClass mc2 = new MyClass();
        System.out.println(mc2.hashCode()); // 523429237
    }
}
class MyClass
{
}
文章标题:javaSE_16_API文档概述丶Object 类
文章链接:http://soscw.com/index.php/essay/78730.html