靜態語句塊 構造語句塊和建構函式的執行順序

2021-09-27 11:26:27 字數 1332 閱讀 9600

public

class

a//非靜態**塊

//靜態**塊

static

}

public

class

bextends

a//非靜態語句塊

//靜態語句塊

static

public

static

void

main

(string[

] args)

}

執行結果:

new兩次

public

class

bextends

a//非靜態語句塊

//靜態語句塊

static

public

static

void

main

(string[

] args)

}

執行結果:

靜態塊屬於類的,非靜態屬於物件,有物件才有類,有類不一定有物件。打個比方,有車子一定有圖紙,有圖紙未必有車子。靜態塊用於類的初始化,建構函式用於物件的初始化,所以靜態塊在非靜態塊之前執行。靜態**只在第一次new執行一次,之後不再執行,而非靜態塊每new一次就執行一次。

所以靜態方法》非靜態語句塊》構造方法

上圖是我遇到的面試題

import test02.test01;

public

class

test01

static

public

static

void

main

(string[

] args)

}

執行結果:c,執行程式時先執行靜態方法new了乙個t1物件,t1裡面就乙個語句塊,然後就列印了a,然後在執行下乙個靜態方法列印b,這些都在mian方法之前執行的,然後在執行main,然後列印"開始",再new t2這個物件,因為靜態方法只在類載入的時候執行一次,所以就列印a,所以選c。

Java 靜態語句塊 語句塊 建構函式

以下是一道筆試題 package com.example public class parent static package com.example public class child extends parent static public static void main string ar...

靜態語句塊 構造語句塊以及建構函式的執行順序

class helloa static public class hellob extends helloa static public static void main string args 輸出 static astatic b main start i m a class helloa i ...

Java 靜態語句塊 語句塊 建構函式執行順序

package test class parent static public parent class child extends parent static public child public class staticiniblockordertest 分析 物件的初始化順序 首先執行父類靜...