Java編程思想——那些易被忽視的關鍵點(三)

1.Java數組:聲明有倆種方式---"int[] a;"---"int a[];",在實際開發中Java常用第一種,表示一個int類型的數組a。如果創建了一個非基本類型的數組則稱此數組爲引用數組,在數組中需要注意以下幾個方面:

{
  int[] a={1,2,3,4,5};//第一種初始化方式,只能緊隨定義的數組之後
//------------------------------------
  int[] b=new int[5];//第二種初始化方式,可以在定義後的任意位置進行操作
  for(int i=0;i<5;i++){
     b[i]=i+1;
  }
//------------------------------------
  Random rand=new Random(30);
  int[] c=new int[rand.nextInt(20)];//爲數組c申請20以內的隨機數的內存空間
//------------------------------------
  c=b;//及將b引用指向的數組也讓c指向,此時c和b中數組的數字實際爲同一份
}

2.可變參數的使用:Java中的可變參數是依靠Java的一個特徵,即所有的對象都繼承Object類,所以只要參數類型爲Object就可以接收任意類型的參數,可變參數有倆種書寫方式,如下:

class Test{
   public void f(Object[] o){}//方法一
   public void d(Object... s){}//方法二,注意這裏必須是"..."結構
}

在書寫爲第二中方式後,實際經過編譯器編譯後的結果仍爲第一種的數組格式,當然參數列表中的Object可以換成任意類型,可以是基本類型也可以是引用類型,只是此時只能傳遞指定類型的任意個數的參數,效果如下:

class Test{
  public static void f(Object... o){
    System.out.println("Object--");
    for(Object ob:o){
       System.out.print(" "+ob);
    }
  }
  public static void d(int... i){
    System.out.println("int--");
    for(int in:i){
       System.out.print(" "+in);
    }
  }
  public static void main(String[] args)
  {
     f(1,2,3,4,5);
     f("abc","java","j2ee");
     d(1,2,3);
  }
}
out:
Object--
 1 2 3 4 5
Object--
 abc java j2ee
int--
 1 2 3
對於在重載方法中使用可變參數,由於編譯器較難識別,如若處理不當往往會報錯【CompileTimeError】,所以可以儘量選擇不用,但是如果要用,最好在參數列表中都添加其他非可變參數來區分
class Test{
  public static void f(Object... o){ }
  public static void f(int... i){ }
  public static void main(String[] args)
  {
     f(1,2,3,4,5);
     f("abc","java","j2ee");
  }
}
//以上代碼會報錯,因爲不能確定該調用哪個重載方法,此時產生歧義性
//------------------------------------
//通過添加非可變參數進行重載方法的區別
class Test{
  public static void f(int i,Object... o){ 
    System.out.println("first");
  }
  public static void f(String st,int... i){
  System.out.println("second"); 
  }
  public static void main(String[] args)
  {
     f(5,1,2,3,4,5);
     f(4,"abc","java","j2ee");
     f("java",1,2,3);
  }
}
out:
first
first
second

3.Java中的枚舉-enum:首先,要清楚枚舉類型並不是Java所特有的,C和C++中都有枚舉類型。其次,枚舉類型其實不算一種新的數據類型,其與其他的普通類的區別是在編譯時會產生一些其他的行爲。還要知道的是,枚舉類型的實例是常量,因此其命名一般採用全大寫字母表示(如果有多個單詞需用下劃線’_‘隔開)。

public enum EnumTest{
   //創建枚舉類型
   JAVA,J2EE,JAVASE,ANDROID
}
public class TestEnum{
  public static void main(String[] args)
  {
     EnumTest e=EnumTest.JAVA;
     System.out.print(e);
  }
}
out:
JAVA

Java中在創建枚舉引用時會自動添加一些方法,如下:

  • toString()——方便像上邊例子一樣顯示枚舉實例的名字。
  • ordinal()——可通過此方法查看枚舉常量聲明的順序。
  • static values()——用來按照枚舉常量的聲明順序產生由這些常量構成的數組。
public class TestEnum{
  public static void main(String[] args)
  {
    for(EnumTest e=EnumTest.values())
    {    
       System.out.println(e+"——"+e.ordinal);
    }
   
  }
}
out:
JAVA——0
J2EE——1
JAVASE——2
ANDROID——3

此外,enum最常使用場景爲與switch的結合:

{
   //EnumTest en;
   switch(en){
      case JAVA:
      case J2EE:
      ...
   }
}

到此爲之,根據閱讀《Java編程思想》的順序(第四版p1-p108),Java中的一些易被忽視或者易被遺忘的重點、關鍵點就全部總結完成,由於Java語言博大精深,這些知識點還是比較淺的,接下來隨着對此書的學習會更加深入的整理總結Java內容,希望我的記錄可以對我和讀者們有一些幫助。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章