題目:
public class test
static
public test(string str)
public static int print(string str)
public static void main(string args)
}
求輸出?
輸出結果:
1:j
i=0
n=0
2:構造塊
i=1
n=1
3:t1
i=2
n=2
4:j
i=3
n=3
5:構造塊
i=4
n=4
6:t2
i=5
n=5
7:i
i=6
n=6
8:靜態塊
i=7
n=99
9:j
i=8
n=100
10:構造塊
i=9
n=101
11:init
i=10
n=102
解析:1. 若沒有main函式中的**,結果1-8仍可輸出,因為這是在程式編譯時就執行的
2. 對於類中的各**的執行順序:靜態變數在類編譯時全部初始化,非靜態變數僅在例項化時才初始化
所以先初始化t1,newtest1()時會將類中非靜態變數初始化,所以初始化j,非靜態**塊,然後呼叫建構函式,t2亦是如此,最後類編譯完後,進入main函式,執行t,t初始化前先將test中非靜態變數初始化,然後呼叫建構函式
3. 對於經繼承關係的類的執行順序:父類靜態**塊和變數->子類靜態**塊和變數->父類非靜態**塊->父類建構函式->->子類非靜態**塊->子類建構函式
4.詳細過程:
1.在載入類test時候,先為k,t1,t2,i,n,a,j分配記憶體,她們的預設值分別為k=0,t1=null,t2=null,i=0,n=0,a=0,j=0
2.執行public static test t1 = new test("t1"); 為t1申請一塊記憶體,並為他的屬性j賦值,呼叫print("j"),此時test類的i,n都還是為0,故列印的第一行為:1:j i=0 n=0 ;呼叫t1的構造塊,列印第二行: 2:構造塊 i=1 n=1 ; 然後呼叫test的建構函式public test(string str){};列印第三行:3:t1 i=2 n=2 ;
3.執行public static test t2 = new test("t2"); 為t2申請一塊記憶體,並為他的屬性值j賦值,呼叫print("j"),此時test類的i=3 n=3 列印第4行為:4:j i=3 n=3 呼叫t2的構造塊,列印第5行: 5:構造塊 i=4 n=4 ;然後呼叫test的建構函式pbulic test(string str){};列印第6 行:6:t2 i=5 n=5 ;
4.接著執行public static int i = print("i"); 列印第7行: 7:i i=6 n=6
5.接著執行public static int n = 99;
6.接著是test的靜態構造塊:列印第8行 8:靜態塊 i=7 n=99
此時已經把test.class完全載入到記憶體了
7.再按著建立t1,t2的方式載入 init
注意:1.類的靜態屬性的賦值過程,是按著從上到下的先後順序進行的!!!
2.每new乙個test物件,就會執行
public int j = print("j");//1,4
static
2013阿里巴巴校園招聘筆試題
今天剛參加完阿里巴巴的筆試,單選,多選,綜合題。單選考的比較雜,每門課考一兩道題甚至一兩個選項,linux啊,網路啊,作業系統啊,多選5道題,也差不多是比較雜的,這些都沒什麼難度,如果基礎還好的話。大題目前兩題很簡單的送分題,乙個是陣列的逆置,乙個是作業系統裡面作業排程演算法先進先出和最短作業優先。...
阿里巴巴2015校園招聘面試彙總
這幾天阿里校招進行的如火如荼。雖然明年才走校園招聘這條道路,但是最近一直關注著最想去的公司 阿里。貌似是要上市的緣故,阿里今年招的人特多 明年情況不妙啊 不得不佩服阿里的效率,所有面試,幾乎都是一天搞定,直接籤offer。這幾天蒐集了一些今年各位師兄的面試經歷,明年加油!阿里2015校招研發面試經驗...
阿里巴巴集團2015秋季校園招聘筆試題
今年阿里全面進行網上筆試,我投的是測試開發工程師,據我所知,大家的題目還是不盡相同 答題說明 本試卷共分為兩部分。第一部分為單選題,時長40分鐘,第二部分為附加題,時長80分鐘,答題時間總計120分鐘。你可在答題開放時間內前來答題,答題一旦開始計時開始,中途不可暫停,請合理安排時間。第一部分的題目沒...