女朋友給她男友打**,**接通的那一刻,
手機裡竟然傳出一句:對不起,您所撥打的**正在通話中,請稍後再撥……
女朋友一聽就知道是她男友的聲音,
所以沒有結束通話問:不是還有一句英文嗎?
對面支支吾吾:sorry,you……the number ……
一道很坑的面試題,但是對理解jvm很有幫助???
例一:
package com.evada.de;
class singleton
public static singleton getinstance()
}/**
* created by ay on 2016/5/24.
*/public class lambdatest
}
執行結果:
counter1 :1
counter2 :0
解釋:
從main函式開始,根據jvm對類的載入機制,singleton.getinstance()主動使用,會觸發類的載入,首先會為類的靜態變數賦予初始值(程式從上到下執行),
即:singleton singleton = null,counter1 = 0,counter2 = 0.
然後會進行類的初始化,即singleton = new singleton(),會觸發建構函式,執行:
counter1 ++;
counter2 ++;
後 counter1 = 1,
counter2 = 1
最後,類在初始化後,為類的靜態變數賦予正確的初始值,為使用者賦予的正確值(從上到下)
即: public static int counter1;//無使用者賦值
public static long counter2 = 0;//使用者賦予初始值0
最終結果:
counter1 :1
counter2 :0
例二:
package com.evada.de;
class singleton
public static singleton getinstance()
}/**
* created by ay on 2016/5/24.
*/public class lambdatest
}
執行結果
counter1 :1
counter2 :1
解釋:
從main函式開始,根據jvm對類的載入機制,singleton.getinstance()主動使用,會觸發類的載入,首先會為類的靜態變數賦予初始值(程式從上到下執行),
即:singleton singleton = null,counter1 = 0,counter2 = 0.
然後會進行類的初始化,即
public static int counter1;//無使用者賦值
public static long counter2 = 0;//使用者賦予初始值0
後 counter1 = 0,
counter2 = 0
singleton = new singleton(),會觸發建構函式,執行:
counter1 ++;
counter2 ++;
最終結果:
counter1 :1
counter2 :1
來自《紅豬》 Java常見面試題 JVM
1.方法區 method area 方法區存放了要載入的類的資訊 如類名 修飾符等 靜態變數 建構函式 final定義的常量 類中的字段和方法等資訊。方法區是全域性共享的,在一定條件下也會被gc。當方法區超過它允許的大小時,就會丟擲outofmemory permgen space異常。在hotsp...
java執行緒面試題1
子執行緒迴圈 10次,接著主線程迴圈 100,接著又回到子執行緒迴圈 10次,接著再回到主線程又迴圈 100,如此迴圈 50次,請寫出程式。備註 不可能一上來就寫出上面的完整 最初寫出來的 如下,問題在於兩個執行緒的 要參照同乙個變數,即這兩個執行緒的 要共享資料,所以,把這兩個執行緒的執行 搬到同...
Java之面試題1
題 大廳裡有100盞燈,每盞燈都編了號碼,分別為1 100。每盞燈由乙個開關來控制。開關按一下,燈亮,再按一下燈滅。開關的編號與被控制的燈相同。開始時,燈是全滅的。現在按照以下規則按動開關。第一次,將所有的燈點亮。第二次,將所有2的倍數的開關按一下。第三次,將所有3的倍數的開關按一下。以此類推。第n...