1. 程式人生 > 其它 >519 隨機翻轉矩陣

519 隨機翻轉矩陣

二維陣列

一、二維陣列

1、二維陣列的含義:
		就是元素是一維陣列的陣列
		舉例:
		   {{11,22},{11,33},{55,88}}
2、二維陣列的定義格式:
            格式1:
                資料型別[][] 變數名 = new 資料型別[m][n];
                左邊:
                    資料型別:表示最終元素的資料型別
                    [][]:表示是一個二維陣列
                    變數名:二維陣列的名稱
                右邊:
                    new:表示為二維陣列分配記憶體空間
                    [m]:表示這個二維陣列中有個元素,其中元素表示的是m個一維陣列
                    [n]:表示的是每一個一維陣列中有n個元素,元素的資料型別與定義時的資料型別一致

               舉例:int[][] arr = new int[3][2]
                    解釋:表示的是定義了一個名為arr的二維陣列,元素是由3個一維陣列組成,其中
                        每個一維陣列的元素的個數為2個
 ==================================================================================
            格式2:
             	資料型別[][] 變數名 = new 資料型別[m][]
             右邊:
             	[]:這裡暫時不將每個一維陣列中的元素個數寫死,以將來傳入的一維陣列元素個數而定
             舉例:
            	int[][] arr = new int[3][]
  ==================================================================================
            格式3:
            資料型別[][] 變數名 = new 資料型別[][]{{元素…},{元素…},{元素…},...}
            舉例:
            int[][] arr = new int[][]{{1,2},{11,22,33},{100,200,300},{10,20}};
            
             簡化格式:
            資料型別[][] 變數名 = {{元素…},{元素…},{元素…},...};
            舉例:
                int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20}};
====================================================================================     
3、注意格式的轉換:
			以下定義的格式也算正確(不推薦使用)
                        資料型別 變數名[][] = new 資料型別[m][n];
                        資料型別[] 變數名[] = new 資料型別[m][n];
                    舉例:int[][] arr = new int[2][3]; (推薦第一種)
                          int arr[][] = new int[3][4];
                          int[] arr[] = new int[2][3];
4、第一種格式:
			獲取二維陣列中元素的地址值,此地址值就是一維陣列的地址值
public class Array2Demo1 {
    public static void main(String[] args) {
        //使用第一種格式定義一個二維陣列,每一個一維陣列的元素個數為2
        int[][] arr = new int[3][2];
        //3代表的是由三個一維陣列組成
        //2代表的是每一個一維陣列的元素個數為2個
        //按照之前的輸出格式,我們先輸出名字
        System.out.println(arr);   //輸出的是二維陣列在堆記憶體中的地址值 [[I@1540e19d
        System.out.println(arr[0]);//輸出的是第一個一維陣列在記憶體中的地址值 [I@677327b6
        System.out.println(arr[1]);//輸出的是第二個一維陣列在記憶體中的地址值 [I@14ae5a5
        System.out.println(arr[2]);//輸出的是第三個一維陣列在記憶體中的地址值 [I@7f31245a
5、獲取元素的方法
public class Array2Demo1 {
    public static void main(String[] args) {
        //使用第一種格式定義一個二維陣列,每一個一維陣列的元素個數為2
        int[][] arr = new int[3][2];
        //陣列獲取元素的方法是通過索引獲取
        System.out.println(arr[0][0]); //0  //輸出的是第一個一維陣列中第一個元素值
        System.out.println(arr[0][1]); //0  //輸出的是第一個一維陣列中第二個元素值
        System.out.println(arr[2][1]); //0 //輸出的是第三個一維陣列的第二個元素值

當使用兩種不同格式定義二維陣列,未賦值之前,二者輸出的地址值不同

6、第二種格式:
public class Array2Demo2 {
    public static void main(String[] args) {
        //使用第二種格式定義一個二維陣列,每一個一維陣列的元素個數沒有定
        int[][] arr = new int[3][];
        System.out.println(arr);   //輸出的是二維陣列本身的地址值 [[I@1540e19d
        System.out.println(arr[0]); //輸出的是二維陣列中第一個一維陣列的地址值 null
        System.out.println(arr[1]); //輸出的是二維陣列中第二個一維陣列的地址值 null
        System.out.println(arr[2]); //輸出的是二維陣列中第三個一維陣列的地址值 null
   =======================給二維陣列的元素賦值================================     
        //初始化一個元素個數為2個的一維陣列,賦值給二維陣列中第一個元素
        arr[0] = new int[2];
        //初始化一個元素個數為3個的一維陣列,賦值給二維陣列中第二個元素
        arr[1] = new int[3];
        //初始化一個元素個數為4個的一維陣列,賦值給二維陣列中第三個元素
        arr[2] = new int[4];
==========================賦值後地址值不是null===================================
        System.out.println(arr); //輸出的是二維陣列本身的地址值 [[I@1540e19d
        System.out.println(arr[0]); //輸出的是二維陣列中第一個一維陣列的地址值 [I@677327b6
        System.out.println(arr[1]); //輸出的是二維陣列中第二個一維陣列的地址值 [I@14ae5a5
        System.out.println(arr[2]); //輸出的是二維陣列中第三個一維陣列的地址值[I@7f31245a
        //獲取二維陣列中第二個一維陣列中的第1個元素
        System.out.println(arr[1][0]);  //預設為0



7、第三種格式:
public class Array2Demo3 {
    public static void main(String[] args) {
        //使用二維陣列定義格式2定義
        int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20,30,40}};

        System.out.println(arr); //輸出二維陣列本身的地址值
        System.out.println(arr[0]); //輸出二維陣列中第一個一維陣列的地址值
        System.out.println(arr[1]); //輸出二維陣列中第二個一維陣列的地址值
        System.out.println(arr[2]); //輸出二維陣列中第三個一維陣列的地址值
        System.out.println(arr[3]); //輸出二維陣列中第四個一維陣列的地址值

二、二維陣列的遍歷以及包裝

1、需要兩個for迴圈:
		外部for迴圈遍歷獲取的是每一個一維陣列
		內部for迴圈遍歷的是獲取到的每一個一維陣列中每個元素值
二維陣列遍歷
        int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20,30,40}};
        分析:
            1、先獲取每一個一維陣列
            2、一次遍歷每一個一維陣列中的元素值
public class Array2Test1 {
    public static void main(String[] args) {
   		 //定義一個二維陣列
        int[][] arr ={{1,2},{11,22,33},{10,20,30,40}};
			
        for(int i =0;i<arr.length;i++){	//外層for獲取每一個一維陣列
            for(int j=0;j<arr[i].length;j++){ //內層for獲取每一個一維陣列的元素值
                if(j==0){
                    System.out.print("["+arr[i][j]+","); //遍歷包裝,為了美觀
                }else if(j==arr[i].length-1){
                    System.out.print(arr[i][j]+"]");  //遍歷包裝,為了美觀
                }else{
                    System.out.print(arr[i][j]+",");  //中間數直接輸出,不需要包裝
                }

            }
        }
        }
    }

            執行結果如下:
            
            [1,2][11,22,33][10,20,30,40]
            Process finished with exit code 0

1