JAVA中到底要怎麼樣初始化

來源:互聯網
上載者:User
Java中的變數作用範圍:
  1. 類的屬性,或者叫範圍
  2. 方法裡的局部變數
  3. 方法的參數

  對於第一種變數,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裡也有,則可以通過編譯。總之,要保證局部變數在使用之前一定被初始化了。所以,一個好的做法是在聲明他們的時候就初始化他們,如果不知道要出事化成什麼值好,就用上面的預設值吧!

  其實第三種變數和第二種本質上是一樣的,都是方法中的局部變數。只不過作為參數,肯定是被初始化過的,傳入的值就是初始值,所以不需要初始化。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.