《瘋狂java講義2》讀書筆記——數組

沒有多維 數組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歷程,由於我意志不堅決,拖延症犯了,各類理由搪塞本身;恰好這兩天休息就寫了這篇博客(很自豪,雖然寫的很差),我但願我能夠一直堅持下去,努力!

相關文章
相關標籤/搜索