構造器與垃圾回收器

1、構造器初始化順序(普通代碼塊、靜態代碼塊、構造方法(子類、父類)、成員、靜態成員的執行順序)


public class Parent {

    private int age = 2;
    private String name = "micky";

    public Parent(int age, String name) {
        super();
        System.out.println("構造方法---" + "age = " + age + "|" + "name =" + name );
        this.age = age;
        this.name = name;
        System.out.println("構造方法+++" + "age = " + age + "|" + "name =" + name );

    }

    private static int version = 1;

    static {
        System.out.println("靜態代碼塊---" + "verion" + version);
        version = 2;
        System.out.println("靜態代碼塊+++" + "version" + version);

    }

    {   
        System.out.println("普通代碼塊---" + "version" + version);
        age = 10;
        name = "panda";
        version = 3;
        System.out.println("普通代碼塊+++" + "vesion =" + version +"|" + "age =" + age + "|" + "name = "+ name);
    }

    @Override
    public String toString() {

        System.out.println("toString方法" + "age = " + age + "|" + "name = " +name);
        return super.toString();
    }

輸出結果爲:靜態代碼塊—verion1
靜態代碼塊+++version2
普通代碼塊—version2
普通代碼塊+++vesion =3|age =10|name = panda
構造方法—age = 5|name =ruimin
構造方法+++age = 5|name =ruimin
toString方法age = 5|name = ruimin
執行順序爲 靜態對象初始化>靜態代碼塊>普通代碼塊>普通對象初始化>構造方法

2、垃圾回收器的回收機制

變量有兩種:原始主數據類型和引用

原始主數據類型指的就是指八種基本數據類型

引用是指創建對象的變量。

我們首先分析這幾種典型代碼的堆棧情況:

首先爲大家講述一下實例變量和局部變量的概念

實例變量:對象的狀態即爲實例變量,實例變量是被聲明在類而不是在方法裏,實例變量存在於所屬的對象中。

局部變量:對象的行爲即爲方法,聲明在方法中的變量即爲局部變量,局部變量和方法的參數被聲明在方法中。它是暫時的,且生命週期只限於方法被放在棧上的這段空間。

對象一定是在堆中,實例變量永遠都會有默認值,局部變量沒有默認值,如果在變量初始化之前就使用的話,編譯器會顯示錯誤。

所有局部變量聲明在方法或方法的參數上

當沒有一個引用指向對象時,該對象就隨時可能被垃圾回收器回收

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章