本文目錄一覽:
java靜態初始化器對什麼進行初始化
java靜態初始化器對static進行初始化。
所謂的靜態和動態是相對於程序運行是而言的,靜態是在程序編譯時就初始化好了的,動態初始化是在程序運行是才動態分配內存空間。
static變數初始值一定要是常量。static變數中文名叫靜態變數。位置靜態局部變數被編譯器放在全局存儲區.data,所以它雖然是局部的,但是在程序的整個生命周期中存在。
作用:
對於靜態全局變數來說,針對某一源文件的以static聲明的文件級變數與函數的作用域只限於文件內(只在文件內可見),也即「內部連接」,因而可以用來限定變數的作用域。
對於靜態局部變數來說,在函數內以static聲明的變數雖然與自動局部變數的作用域相同(即作用域都只限於函數內)。
但存儲空間是以靜態分配而非默認的自動分配方式獲取的,因而存儲空間所在區域不同,且兩次調用間變數值始終保持一致;必須注意,靜態局部變數只能初始化一次,這是由編譯器來保證實現。
對於靜態成員變數來說,在C++中,在類的定義中以static聲明的成員變數屬於類變數,也即在所有類實例中共享,與之相對的就是過程變數。
java中怎麼數組初始化?
//數組定義最方便的就是用for循環來做定義,數組下標是從0開始,到11的話就是12個數字。要輸出的話可以用以//號注釋掉的後面的一句if(i12){System.out.println(x[i]);}當然也可以自己再寫一個for循環語句來輸出,不過我覺得這有點畫蛇添足了
public class shuzu {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int x[]=new int[12];
for(int i=0;i=11;i++)
{
x[i]=i;
//if(i12){System.out.println(x[i]);}
}
}
}
.動態初始化:數組定義與為數組分配空間和賦值的操作分開進行;
2.靜態初始化:在定義數字的同時就為數組元素分配空間並賦值;
3.默認初始化:數組是引用類型,它的元素相當於類的成員變數,因此數組分配空間後,每個元素也被按照成員變數的規則被隱士初始化。
數組名加上下標可以表示數組元素。數組的第一個元素是下標為O的元素,例如points[0]。最後一個元素的下標為length一1,如points[points.1ength一1]。當創建一個數組時,每個元素都被初始化。如前面創建的字元數組s,它的每個值被初始化為O(\0000)。而數組points的每個值被初始化為null,表明它還沒指向真正的Point對象。
在賦值語句points[o]= New Point();後,系統創建一個真正的Point對象,並讓數組的第一個元素指向它。
注意:包括數組元素在內的所有變數的初始化.從系統安全形度看都是必不可少的任何變數都不能在沒有初始化狀態下使用。編譯器不能檢查數組元素的初始化情況。Java允許用初值來創建數組,如例:String names[]={」Georgianna」,「Tenn」,「Simon「,「Tom「};用4個字元串常量初始化names數組,這種方式稱為靜態初始化,它等價於:String names[];names=new String[4];names[0]=「Georgianna「;names[1]=「JEN」;names[2]=」Simon「;靜態初始化可用於任何元素類型,初值塊中每個位置的每個元素對應一個引用。
昆明Java培訓:為什麼Java中的局部變數必須要初始化?
現在假如你是java語言的開發者,你已經將對象保存在了堆內存中,而將局部變數保存在了棧內存中,你會怎麼做呢?Java中的變數分為類變數,成員變數和局部變數,分別位於JVM的方法區、堆內存和棧內存中。
類變數和成員變數都可以在類首次載入和類初始化時,給出默認值,但是局部變數就必須要在使用前賦值。
實際上,Java完全可以設計成局部變數不需要初始化,只要作者們高興。
事實上,就有這樣的語言,比如C++。
當然,C++不強制必須初始化,不代表就不用初始化,實際上,C++開發者也都是建議對局部變數初始化,以防止出現野指針這類事情。
其實,不管是局部變數還是成員變數,都是必須要初始化的,那為什麼成員變數會自動初始化?其實正是因為成員變數屬於對象,而對象是保存在堆中的,所以jvm就在初始化類的時候把成員變數初始化呢,而如果我們在調用方法的時候,還要jvm去將局部變數也進行初始化,是不是對會影響到性能呢?因此,直接強制局部變數必須要初始化反而更好。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293793.html