陣列(Array) @ Penguin 工作室,一起JAVA吧! - 隨意窩
文章推薦指數: 80 %
這和剛才的程式所達到的目的是一樣的,{ }裡面的數值及代表陣列按照順序的值,每個值之間用逗號分開,不同的是這種用法它會根據{ }裡面的值的多寡,自動指定陣列的長度( ...
Penguin工作室,一起JAVA吧!曾經以為這輩子不會走上寫程式這條路。
但當我逐漸創作出更多作品,我知道我樂在其中。
沒錯,寫程式是創作。
發揮你的創意DNA,一起JAVA吧!日誌相簿影音好友名片
200910191958陣列(Array)?JAVA入門篇 陣列,就是由一群相同資料型態的資料所組成的一個有順序性的資料列,具體觀念可用下圖來說明:
上圖由一列空格子所組成,格子的數量可以無限延伸,每個格子裡面可以放一筆資料,而且格子間是有順序的。
陣列的概念就是這樣,假設裡面儲存的資料為整數,情況就會如下圖:
宣告陣列的方法有下列兩種: int[]array=newint[5]; intarray[]l=newint[5];
這兩種方法所達到的目的是一樣的,都是宣告一個名為array的整數陣列,int[5]裡面的數字代表的就是這個陣列有多少個空格,但是請注意,由於在程式語言中索引值都是從0開始編號的,因此當你宣告這個陣列有5個空格時,事實上這5個空格的編號是0-4,而不是1-5。
宣告完成後,這個陣列一開始是沒有值的,所以我們可以把值放進陣列裡面,例如: array[0]=1; array[1]=5; array[2]=100;
這表示我們在陣列的某一格填入某一個值,例如在編號0的格子填入1,在編號1的格子填入5,在編號2的格子填入100等等。
所以現在我們就可以把陣列裡面的值印出來看看,例如: System.out.println(array[0]); System.out.println(array[1]); System.out.println(array[2]);
印出來結果就會是: 1 5 100
另外,我們也可以在宣告陣列時就指定裡面的值,例如: int[]array={1,5,100};
這和剛才的程式所達到的目的是一樣的,{}裡面的數值及代表陣列按照順序的值,每個值之間用逗號分開,不同的是這種用法它會根據{}裡面的值的多寡,自動指定陣列的長度(格子數)。
所以上例中陣列的長度會被指定為3,而第一個例子陣列雖然也只有3個值,但是我們一開始有定義陣列的長度為5,因此第一個例子陣列的長度會是5。
我們可以利用length這個屬性來獲得陣列的長度,例如: array.length
就會得到array這個陣列的長度。
因此我們可以把上面兩個例子的陣利長度都印出來,就可以看到結果: System.out.println(array.length);
有了length這個屬性之後,我們在取陣列值的時候就可以搭配迴圈來使用,例如: for(inti=0;i System.out.println(array[i]); }
這段程式就會把陣列裡面的值都印出來。
但是事實上如果只是要把陣列中的值全部取出,還有另一個方式: for(intmember:array){ System.out.println(member); }
這裡的member是使用者自訂的變數名稱,用來存放陣列目前這個位置的值,所以我們把member的值印出來,就可以看到陣列每個位置的值,冒號後面則是要取值的陣列名稱,例如在這邊是array。
我們也可以將陣列裡面的值做排序,在使用這個方法前,必須先在程式的最上面載入所需的資源,所以請在class的外面加上: importjava.util.*;
載入之後,在程式中就可以這樣使用: Arrays.sort(array);
()中即是要做排序的陣列的名稱,執行後陣列裡面的值就會做升冪排序,例如: int[]array={1,100,5};
經過排序後陣列裡面的值會變成{1,5,100}。
我們可以把排序前和排序後的值印出來看,例如: int[]array={1,100,5}; System.out.println("排序前:"); for(intmember:array){ System.out.println(member); } Arrays.sort(array); System.out.println("排序後:"); for(intmember:array){ System.out.println(member); }
可以發現執行結果為: 排序前: 1 100 5 排序後: 1 5 100
可明顯看出陣列被排序過了。
其他資料型態的使用方式也是一樣的,只是宣告的部分改為要用的資料型態,例如: int[]array=newint[5]; char[]test=newchar[5]; String[]test2=newString[5];
而字元型態陣列做排序時,會比較字元的ASCII碼,字串則會比較第一個字元,若第一個字元相同,會比較第二個字元,以此類推。
此外,陣列也可以直接指定給另外一個陣列,例如: int[]a={5,10}; int[]b=a;
這樣一來b的值會和a一模一樣。
然而當我們再次改變a陣列的值時,例如: int[]a={5,10}; int[]b=a; a[0]=15;
會發現b陣列的值也同樣跟著改變了,已就是說b[0]此時也變成15,這是因為這樣做時,a和b被指定到同樣的記憶體空間,說明如下:
當我們使用b=a時,程式會把b指定到和a相同的實體記憶體位置,這樣我們就會得到一模一樣的陣列,但是當a的值改變時,由於b還是指定到相同的位置,所以b所讀取到的值也會是改變過後的值。
那麼要如何才能讓兩個陣列的記憶體位置是不一樣的呢?我們可以用下面語法: System.arraycopy(a,0,b,0,a.length);
這個語法會把a的值複製到b自己的記憶體位置,而不會指定到同樣的位置,第二個數字的0(a,0,b,0,a.length)代表從a的第0個值開始複製,第四個數字0(a,0,b,0,a.length)則代表從b的0開始複製,最後的a.length則代表複製到a的哪一個值,a.length表示複製到a的最後一個值。
利用下面語法就可以觀察出當a的值被改變,b的值不會受到影響: int[]a={5,10}; int[]b=newint[a.length]; System.out.println("a的值改變前"); System.arraycopy(a,0,b,0,a.length); for(intmember:a){ System.out.println(member); } for(intmember:b){ System.out.println(member); } a[0]=999; System.out.println("a的值改變後"); for(intmember:a){ System.out.println(member); } for(intmember:b){ System.out.println(member); }
執行結果為: a的值改變前 5 10 5 10 a的值改變後 999 10 5 10
以上所介紹的陣列叫做二維陣列,也就是只有一列數值,但事實上陣列還可以有多維陣列,例如:
也就是說可以由很多列組成。
多維陣列的用法和二維陣列基本上類似,只是在宣告及取值時有一些變化: int[][]array=newint[2][3];//宣告一2*3的多維陣列 array[0][2]=10;//取出多維陣列的值 int[][]array2={{10,5},{8,9},{6,9}};//宣告一帶有預設值的2*3多維陣列
而利用迴圈取值時可以利用下列語法: for(inti=0;i++){ for(intj=0;j System.out.println(array2[i][j]); } }
其中array[i].length可以得到某一列的長度。
另外一種方法為: for(intcolumn[]:array){ for(introw:column){ System.out.println(row); } }
其中intcolumn[]:array會把陣列的每一列分別取出,introw:column再把取出的陣列每一格取出。
當然,多為陣列也可以有更多維的組合,用法都是一樣的,甚至每一列的長度是可以不一樣的,稱為不規則陣列,例如: int[][]array={{10,5,4},{8,9},{6,9}};
因此使用者可以根據不同的需求設計不同的陣列。
劉蓁/Xuite日誌/回應(0)/引用(0)沒有上一則|日誌首頁|沒有下一則回應
全部展開|全部收合
關鍵字
jane17512001's新文章視窗程式JavaSwing-常用元件視窗程式JavaSwing-基本設定及LayoutXMPP即時通訊Queue(佇列)、ConcurrentLinkedQueue遞迴(Recursion)以及求解最大公因數log4j日誌記錄正則表示式(Regularexpression)HTTP連線(HttpURLConnection、HttpClient)ResourceBundleFTP檔案傳輸(apache.common.net.ftp)
BloggerAds
延伸文章資訊
- 1Java 数组 - 菜鸟教程
Java 数组数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理 ... i < array.length; i++) { System.out.print(arr...
- 2陣列- Java備忘筆記 - GitBook
陣列長度length of Array. 陣列被創造出來,元素個數就決定好了,很多時候我們需要陣列的大小(length)方便我們做運算、處理,那要如何取得呢? 恩,陣列是一個物件,它有 ...
- 3Java 中的length 、length()、size()一次摸透透 - Medium
一次搞懂java 中char、String的長度、Array的大小、List的大小,到底該call 哪個api !!!!!!. “Java 中的length 、length()、size()一次...
- 4Java :: 陣列
- 5陣列(Array) - Java學習筆記