l 陣列:
宣告 | l 一維陣列宣告: n int a1[] = new int[5]; n int[] a1; a1 = new int[5]; // 但不可以int[5] a1((宣告陣列大小只能在”=”右邊) n int testArray[]; testArray = new int[ l 多維陣列宣告: n int[][] a1 = {{1,2},{3,4,5},{6,7,8,9}}; l 需特別注意的宣告: n String [] s1 = new String[]{“a”,”b”,”c”}; n 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[] ; l 所有的陣列型態都是implement自” Cloneable interface”、” Serializable interface”,所以任何一種Array都可被assign到Cloneable type。 |
不可以 | l Primitive array types不可被相互assigned ( 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 閱讀筆記 】