沒有多維 數組java
java語言裏的數組類型是引用類型,所以,數組變量實際上是一個引用,這個引用指向真實的 數組內存。數組元素的類型也能夠是引用,若是數組元素的引用再次指向真實的數組內存,這種情形看上去很像多位數組。數組
定義數組類型的語法:type[] arrName;,這是典型的一維數組的定義語法 ,其中type是數組元素的類型。若是但願數組元素也是一個引用,並且是指向int數組的引用,則能夠把type具體成int[],那麼上面定義數組的語法就是int([][] arrName)。工具
若是把int這個類型擴大到java的全部類型(不包括數組 類型),則出現了定義二維數組的語法:code
arrName = new type[]
java語言採用上面的語法格式來定義二維數組,但它的實質仍是一維數組,只是其中數組元素也是引用,數組元素裏保存的醫用指向一維數組。排序
執行初始化:索引
arrName = new type[length][]
java中對多維數組的 定義就是來源於此。內存
操做數組的工具類字符串
java提供的Arrays類裏包含的一些static修飾的方法能夠直接操做數組。input
》int binarySearch(type[] a, type key): 使用二分法查詢key元素值在數組a中出現的索引:若是a數組不包含key元素值,則返回負數。調用該方法時要求數組中元素已經按升序排列,這樣才能獲得正確結果。博客
》type[] copyOf(type[] original, int newLength): 這個方法將會把original數組複製成一個新數組,其中length是新數組的長度。
》boolean equals(type[] a2): 若是a數組和a2數組的長度相等,並且a數組和a2數組的元素也一一相同,該方法將返回true。
》void sort(type[] a): 該方法對a數組的數組元素進行排序。
》String toString(type[] a): 該方法將一個數組轉換成一個字符串。
下面是示範程序:
import java.util.Arrays; public class ArraysTest { public static void main(String[] args) { //定義一個a數組 int[] a = new int[]{3,4,5,6}; //定義一個a2數組 int[] a2 = new int[]{3,4,5,6}; //a數組和a2數組的長度相等,每一個元素依次相等,將輸出true System.out.println("a數組和a2數組是否相等:" + Arrays.equals(a,a2)); //經過複製a數組,生成一個新的b數組 int[] b = Arrays.copyOf(a,6); System.out.println("a數組和b數組的值是否相等:" + Arrays.equals(a,b)); //輸出b數組的元素,將輸出[3,4,5,6,0,0] System.out.println("b數組的元素爲:" + Arrays.toString(b)); //將b數組元素的第三個元素(包括)到第五個數組的元素(不包括)賦值爲1 Arrays.fill(b,2,4,1); //輸出b數組的元素,將輸出[3,4,1,1,0,0] System.out.println("b數組的元素爲:" + Arrays.toString(b)); //對b數組進行排序 Arrays.sort(b); //輸出b數組的元素,將輸出{0,0,1,1,3,4] System.out.println("b數組的元素爲:" + Arrays.toString(b)); } }
數組應用舉例
只挑選一個比較感興趣的例子:五子棋
import java.io.*; public class Gobang { //定義一個二位數組來充當棋盤 private String[][] board; //定義棋盤的大小 private static int BOARD_SIZE = 15; public void initBoard() { //初始化棋盤數據 board = new String[BOARD_SIZE][BOARD_SIZE]; //把每個元素賦爲"+",用於在控制檯面畫出棋盤 for (int i = 0 ;i < BOARD_SIZE ;i++ ) { for (int j = 0;j < BOARD_SIZE ;j++ ) { board[i][j] = "+"; } } } //在控制檯輸出棋盤方法 public void printBoard() { //打印每個數組元素 for (int i = 0 ;i < BOARD_SIZE ;i++ ) { for (int j = 0;j < BOARD_SIZE ;j++ ) { //打印數組元素後不換行 System.out.print(board[i][j]); } //每打印完一行數組元素後輸出一個換行符 System.out.print("\n"); } } public static void main(String[] args)throws Exception { Gobang gb = new Gobang(); gb.initBoard(); gb.printBoard(); //這是用於獲取鍵盤輸入的方法 BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); String inputStr= null; //br.readerLine():每當鍵盤上輸入一行內容後按住回車鍵,剛輸入的內容將被br讀取到 while ((inputStr = br.readLine()) != null) { //將用戶輸入的字符串以逗號(,)做爲分隔符,分隔成2個字符串 String[] posStrArr= inputStr.split(","); //將2個字符串轉換成用戶下棋的座標 int xPos = Integer.parseInt(posStrArr[0]); int yPos = Integer.parseInt(posStrArr[1]); //把對應的數組元素賦爲"o". gb.board[yPos -1][xPos -1]= "O"; gb.printBoard(); System.out.println("請輸入您下棋座標,應以x,y的格式:"); } } }
*此程序針對於初學者的一個簡單範例,裏面涉及到java其它基礎知識:與用戶互動——鍵盤輸入;異常處理。(棋子我不知道這麼弄成黑色棋子,因此用大寫字母O表示了。)
無關事要:原本我準備幾天前就寫這篇博客的,來記錄個人java歷程,由於我意志不堅決,拖延症犯了,各類理由搪塞本身;恰好這兩天休息就寫了這篇博客(很自豪,雖然寫的很差),我但願我能夠一直堅持下去,努力!