java構造方法,構造代碼塊,靜態代碼塊的執行順序

構造方法,構造代碼塊,靜態代碼塊的執行順序

  • 靜態代碼塊:用static聲明,jvm加載類時執行,僅執行一次
  • 類中直接用{}定義,每次建立對象時執行
同級別的變量(static和普通變量)的執行順序由代碼執行順序決定(從上到下也就是代碼書寫順序)
package com.rumenz;
public class Rumenz {

    private Integer id=100;
    private  static String name="入門小站";
    {
        System.out.println("構造代碼塊。。。");
        System.out.println("變量 id:"+id);
    }
    static {
        System.out.println("靜態變量name:"+name);
        System.out.println("靜態代碼塊。。。");
    }
    public Rumenz() {
        System.out.println("構造方法。。。。");
    }
    public static void main(String[] args) {
        Rumenz r=new Rumenz();
    }
}

執行Rumenz r=new Rumenz();輸出html

靜態變量name:入門小站
靜態代碼塊。。。
構造代碼塊。。。
變量 id:100
構造函數。。。。

不執行Rumenz r=new Rumenz();輸出java

靜態變量name:入門小站
靜態代碼塊。。。

構造方法

public Rumenz() {
        System.out.println("構造方法。。。。");
}
  1. 對象一旦建立就會調用與之相對應的構造方法
  2. 不建立對象就不會調用構造方法
  3. 構造函數的做用是給對象初始化
  4. 對象建立一次,構造函數只調用一次,而普通方法能夠被調用不少次

構造代碼塊

{
    System.out.println("構造代碼塊。。。");
}
  1. 給對象進行初始化.
  2. 對象一建立就會執行構造代碼塊,並且先於構造方法執行.
  3. 構造代碼塊每一次建立對象都會執行,可是建立對象時調用不通的構造方法會獲得不一樣的對象,也就是說構造代碼塊用於初始化對象通用的屬性或者功能.

靜態代碼塊

static {
    System.out.println("靜態代碼塊。。。");
}
  1. 由jvm加載類時執行,並且只執行一次.
  2. 靜態代碼塊是給類進行初始化,構造代碼塊是給對象進行初始化
  3. 靜態代碼塊中的變量屬於局部變量

原文: https://rumenz.com/rumenbiji/ constructor-static-code-block.htmlWechatIMG8.pngjvm

相關文章
相關標籤/搜索