㈠ Java 變數到底要如何初始化
不同的變數初始化方法不同。
變數包括:
類的屬性,或者叫值域
方法里的局部變數
方法的參數
對於第一種變數,Java虛擬機會自動進行初始化。如果給出了初始值,則初始化為該初始值。如果沒有給出,則把它初始化為該類型變數的默認初始值。
int類型變數默認初始值為0
float類型變數默認初始值為0.0f
double類型變數默認初始值為0.0
boolean類型變數默認初始值為false
char類型變數默認初始值為0(ASCII碼)
long類型變數默認初始值為0
所有對象引用類型變數默認初始值為null,即不指向任何對象。注意數組本身也是對象,所以沒有初始化的數組引用在自動初始化後其值也是null。
對於兩種不同的類屬性,static屬性與instance屬性,初始化的時機是不同的。instance屬性在創建實例的時候初始化,static屬性在類載入,也就是第一次用到這個類的時候初始化,對於後來的實例的創建,不再次進行初始化。這個問題會在以後的系列中進行詳細討論。
對於第二種變數,必須明確地進行初始化。如果再沒有初始化之前就試圖使用它,編譯器會抗議。如果初始化的語句在try塊中或if塊中,也必須要讓它在第一次使用前一定能夠得到賦值。也就是說,把初始化語句放在只有if塊的條件判斷語句中編譯器也會抗議,因為執行的時候可能不符合if後面的判斷條件,如此一來初始化語句就不會被執行了,這就違反了局部變數使用前必須初始化的規定。但如果在else塊中也有初始化語句,就可以通過編譯,因為無論如何,總有至少一條初始化語句會被執行,不會發生使用前未被初始化的事情。對於try-catch也是一樣,如果只有在try塊里才有初始化語句,編譯部通過。如果在catch或finally里也有,則可以通過編譯。總之,要保證局部變數在使用之前一定被初始化了。所以,一個好的做法是在聲明他們的時候就初始化他們,如果不知道要出事化成什麼值好,就用上面的默認值吧!其實第三種變數和第二種本質上是一樣的,都是方法中的局部變數。只不過作為參數,肯定是被初始化過的,傳入的值就是初始值,所以不需要初始化。
㈡ 在匯編語言中,怎樣編程給變數賦初始值
匯編裡面的變數大體上分為兩種:全局變數和局部變數,和高級語言差不多
全局變數的定義就是初始化,比如在數據段中
a db 064H
a的值就是64H了
數據段中的數據會被編譯成一個獨立的數據塊,在操作系統載入這個程序的時候會把這個數據塊一起載入到內存里,在程序沒有運行之前,這些數據就已經被初始化好了
局部變數是在棧中動態分配的,這是他的值不確定的原因,對於局部變數的初始化只要用mov賦值就行了,高級語言其實就是這么做的
匯編裡面定義局部變數的方法我都忘光了,我就不給你舉例子了,你自己看書吧,IBM-PC匯編語言程序設計裡面好像有
㈢ c語言中局部變數初始化是什麼意思,怎麼初始化
「局部變數初始化」是指在使用這個局部變數前,要對其進行初始化。這是因為局部變數是從內存堆中分配的,用完就還給內存堆,所以被分配的局部變數並不一定是0,而很可能是其他地方用過的一個值,因此在使用這個變數之前,要對它進行顯示初始化。初始化可以用兩種方式(假設初值為0):
聲明變數是賦值:int val=0;
在使用前賦值:
int val;
.... //其它代碼
val=0;
....//後面開始使用變數val