數組初始化 可變參數

數組的初始化

寫在開始的話”:重構即重寫代碼,以使得它更可讀、更容易理解,並因此更具有維護性。軟件最大的投入到了代碼的維護上,所以磨刀不誤砍柴工。

 

數組只是相同類型的、用一個標識符名稱封裝到一起的對象序列或基本類型數據序列。

數組有三種初始化方式

第一種

Integer[] a = new Integer[20];

它現在還只是一個引用數組,直到通過創建新的Integer對象,並把對象賦值給引用,初始化進程纔算結束。要是基本類型,會自動初始化成空值。

另外,打印數組時,可使用數組工具類import java.util.Arrays;  Arrays.toString()方法答應,或自己重寫toString()方法。

第二種

Integer[] a = {new Integer(2),new Integer(3)};

 

第三種

Integer[] a = new Integer[]{new Integer(2),new Integer(3),};

在後邊兩種初始化列表的最後一個逗號都是可選的,這一特性維護長列表變得更容易

儘管第一種形式很有用,當他也更加受限,因爲只能用於數組被定義之處,你可以在任何地方使用第二種和第三種形式,甚至在方法調用的內部。

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {

   public static void main(String[] args) {
      SpringApplication.run(EurekaApplication.class, args);
      Other.main(new String[]{"fiddle","de ","dum"});
   }

}
class  Other {
   public static void main(String[] args) {
      for(String s:args)
         System.out.print(s+"  ");
   }
}

結果

fiddle  de   dum  

從這個例子中可以看出  public 是主程序如口的函數,並且和程序名相同,並且只能有一個

PublicOther只是一個普通的函數

Other.main() 的參數而創建的數組時在方法調用處創建的。

可變參數列表

public class EurekaApplication {

   public static void main(String[] args) {
      SpringApplication.run(EurekaApplication.class, args);
      Other.main("fiddle","de ","dum");
      Other.main("one","two");
      Other.main("1","2");
      Other.main();

   }

}
class  Other {
   public static void main(Object... args) {
      for(Object s:args){
         System.out.print(s+"  ");
      }
      System.out.println();
   }
}

 

結果

fiddle  de   dum  

one  two  

1  2  

有了可變參數,就再也不用顯示的編寫數組語法了。當你指定參數時,編譯器實際會爲你去填充數組,你獲得的仍舊是一個數組,這就是爲什麼Print()可以使用foreach來迭代該數組的原因。當是這不僅僅是從元素列表到數組的自動轉換。最後一行程序表明將0個參數傳遞給可變參數列表是可行的。

可變參數列表變爲數組的情況,並且如果在該列表中沒有任何元素,那麼轉變成的數據的尺寸爲0.

   System.out.println(new Integer[]{1}.getClass());
   System.out.println(new int[]{1}.length);
   System.out.println(new int[0].getClass());

class [Ljava.lang.Integer;

1

class [I

System.out.println(new Integer(2).getClass());

class java.lang.Integer

getClass()方法屬於Object的一部分,他將產生對象的類,並且在打印該類時,可以看到表示該類類型的編碼字符串。前導的“[”表示這是一個後邊緊隨的類型的數組,而緊隨的“I”表示基本類型int。使用可變參數列表不依賴自動包裝機制,而實際上使用的事基本類型。可以在單一的參數列表中將類型混合在一起,而自動包裝機制將有選擇的將int參數提升爲Integer

可變參數列表使得重載過程變的複雜了。

所以你給這重載方法都添加一個非可變參數,就可以避免錯誤。

 

發佈了378 篇原創文章 · 獲贊 312 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章