l 陣列:
宣告
l 一維陣列宣告:
n int a1[] = new int[5];
n int[] a1; a1 = new int[5]; // 但不可以int[5] a1((宣告陣列大小只能在”=”右邊)
n int testArray[]; testArray = new int[6]{1, 2, 3, 4 ,5 ,6}; // []內不可有size
l 多維陣列宣告:
n int[][] a1 = {{1,2},{3,4,5},{6,7,8,9}};
l 需特別注意的宣告:
n String [] s1 = new String[]{“a”,”b”,”c”}; String [] s1 = new String[]{‘a’,’b’,’c’};
n char [] c1 = new char[]{'a','b','c'}; char [] c1 = new char[]{“a”,”b”,”c”};
Ø 陣列宣告為char時,{}中可為 ‘a’ (~z)、’0’(~9)、0(~65535)、’\u0000’(~’\uFFFF’)
Ø 陣列宣告時若為{‘3’,’a’},無論型態為何,print出來皆為ANSI碼,但需注意合法性(如上) 。
Ø 陣列宣告為char時若未給初值,則初值為”空白”,{‘ ’}是合法的,但{‘’}為不合法的,至少要有空白(但若為String,則””與” ”皆為合法的)。
可以
l 宣告時就必須指定資料型態,且同一陣列中的元素其資料型態必須相同。
l 陣列宣告時,[]必須位於type或名稱的後面。
(int[] a1[],a2[] ; int []a5,a6[] ; int[] a7,a8[] ; int []a3,[]a4;)
l 所有的陣列型態都是implement自” Cloneable interface”、” Serializable interface”,所以任何一種Array都可被assign到Cloneable type。
不可以
l Primitive array types不可被相互assigned (Long args = Integer args) 。
l 宣告大小與給予初始值不可同時出現,否則會compile-time error,但也不可以兩者都沒有。
l 變數不可assign給二維陣列,一維陣列也不可assign給二維陣列。
注意
l 陣列無論是否為class-level或local都一定會做init,內容值則視type決定。
l 陣列的大小是 myAry.length,不是myAry.length()。length不須宣告,也不可更改。
l 陣列的index只限於byte、short、int、char四種type。
l 存取範圍超過array索引範圍會產生Exception,為runtime exception不是compile exception
l byte [] ary1, ary2[]; //ary2是二維陣列,小心不要上當。
l float ary = new float [123]; //不合法,少括號; Object ary = new float[123]; // 合法
来自:【 Garfield 的 SCJP 閱讀筆記 】