java中,什么時候要用到靜態語句塊,它有何作用呢
一 般情況下,如果有些代碼必須在項目啟動的時候就執行的時候,需要使用靜態代碼塊,這種代碼是主動執行的;需要在項目啟動的時候就初始化,在不創建對象的情 況下,其他程序來調用的時候,需要使用靜態方法,這種代碼是被動執行的. 靜態方法在類加載的時候 就已經加載 可以用類名直接調用
比如main方法就必須是靜態的 這是程序入口
兩者的區別就是:靜態代碼塊是自動執行的;
靜態方法是被調用的時候才執行的.
靜態方法
(1)在Java里,可以定義一個不需要創建對象的方法,這種方法就是靜態方法。要實現這樣的效果,只需要在類中定義的方法前加上static關鍵字。例如:
public static int maximum(int n1,int n2)
使用類的靜態方法時,注意:
a在靜態方法里只能直接調用同類中其他的靜態成員(包括變量和方法),而不能直接訪問類中的非靜態成員。這是因為,對于非靜態的方法和變量,需要先創建類的實例對象后才可使用,而靜態方法在使用前不用創建任何對象。
b 靜態方法不能以任何方式引用this和super關鍵字,因為靜態方法在使用前不用創建任何實例對象,當靜態方法調用時,this所引用的對象根本沒有產生。
(2)靜態變量是屬于整個類的變量而不是屬于某個對象的。注意不能把任何方法體內的變量聲明為靜態,例如:
fun()
{
static int i=0;//非法。
}
(3)一個類可以使用不包含在任何方法體中的靜態代碼塊,當類被載入時,靜態代碼塊被執行,且只被執行一次,靜態塊常用來執行類屬性的初始化。例如:
static
{
}
JAVA有關在java語言中,臨界區可以是一個語句塊,或者是一個方法
選Asynchronized(同步) 在Java中此關鍵字以兩種相關的方式使用,可以作為一個修飾符,也可以作為一條語句。
首選,這是一個應用于類或實例方法的修飾符。它表示,相應方法在修改類的內部狀態 (或者修改類的一個實例的內部狀態)時,所用的方式不是線程安全的。
在運行一個synchronized類方法之前,Java得到該類的一個鎖, 以此確保其他線程無法并發地修改此類。 在運行一個synchronized實例方法前,Java將對調用該方法的實例得到一個鎖, 從而確保其他線程不能同時修改此對象。
Java還支持一個synchronized語句,它相當于指定代碼的一個 “臨界區”。synchronized關鍵字后面是一個用括號括起的表達式以及一條語句或一個語句塊。
此表達式必須計算為一個對象或數組。 Java在執行相應語句之前將對所指定的對象或數組得到一個鎖。
請你解釋一下下面的Java語句塊
把創建提示窗口CustomDialog frame = new CustomDialog()并設置為顯示*ible(true)的事件添加進awt事件處理線程中轉 *Late把這個事件(new Runnable(設置計算器可見))添加到awt的事件處理線程當中去,awt的事件處理線程會按照隊列的順序依次調用每個待處理的事件來運行,使用該方式的原因是:awt是單線程模式的,所有awt的組件只能在(推薦方式)事件處理線程中訪問,從而保證組件狀態的可確定。