Java中的小知識點雜燴

來源:互聯網
上載者:User
 

        最近在複習Java的基礎,遇到了一些比較偏的考核題目,特地總結一下需要注意的知識點!不過在使用IDE編程的時候,這些問題都會馬上被IDE識別出來,編譯是通不過的。我在這裡提出來就相當於給初學者一些貢獻吧!

       一、聲明局部變數是的一些特性和規則

          (1)聲明的局部變數是不會被預設初始化的,成員變數則是會被預設初始化的。例如:

                     

class Demo {         public static void main(String[] args) {           String s;           System.out.println(s);     }}

上面的這段範例程式碼中,直接輸出s是錯誤的,連編譯都不同通過,因為在main方法中聲明s,這時s是局部變數,不會被預設初始化值,因此在下面直接輸出是有錯誤的。代碼改寫如下即可:

class Demo {         String s;      public static void main(String[] args) {           System.out.println(s);     }}

這樣輸出的話就是null了,因為s被聲明為成員變數,因此預設會被初始化值null。

              (2)聲明局部變數的前面不能有任何許可權存取修飾詞(public、protected和private),只能是friendly的預設友好的,但是可以使用final來修飾局部變數。

      二、使用final來修飾基本類型局部變數和參考型別局部變數的區別
              (1)final修飾基本類型局部變數的時候,不能對其基本類型的資料值進行修改。因為final修飾的變數是最終的,不能被改變。如下代碼:

public class Something {   public int addOne(final int x) {       return ++x;   }}

這裡addOne方法中使用final int x作為參數,下面再對其進行自增是錯誤的。

               (2)final修飾參考型別的局部變數的時候,也就是對象。這時可以修改對象中的屬性資訊,但是不能修改對象的引用。比如下面的代碼:

public class Something {   public static void main(String[] args) {       Other o = new Other();       new Something().addOne(o);   }   public void addOne(final Other o) {       o.i++;   }}class Other {   public int i;}

這裡addOne方法接收的參數是一個對象,而在方法體中自增了對象中的屬性 i 的值,而對象的引用地址沒有被修改,因此不會發生錯誤。而如果在方法體中寫上:o = new Other(); 這時就會報錯了。

            (3)在類中被final修飾聲明的成員變數不會預設初始化值。因此必須在構造器之前就得給定一個具體值。例如下面的代碼:

class Something {    final int i;// 這行就已經報錯了,編譯不能通過,沒有初始化值    public void doSomething() {        System.out.println("i = " + i);    }}

final int i是個final的instant variable (執行個體變數,或叫成員變數)。final的instant
variable沒有default value,必須在constructor (構造器)結束之前被賦予一個明確的值。可以修改為"final
int i =0;"。


 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.