二維數組格式1java
/* 二維數組:就是元素爲一維數組的一個數組。 格式1: 數據類型[][] 數組名 = new 數據類型[m][n]; m:表示這個二維數組有多少個一維數組。 n:表示每個一維數組的元素有多少個。 注意: A:如下格式也能夠表示二維數組 a:數據類型 數組名[][] = new 數據類型[m][n]; b:數據類型[] 數組名[] = new 數據類型[m][n]; B:注意下面定義的區別 int x; int y; int x,y; int[] x; int[] y[]; int[] x,y[];//這個x是一維數組,y是二維數組 */ class Array2Demo { public static void main(String[] args) { //定義一個二維數組 int[][] arr = new int[3][2]; //定義了一個二維數組arr //這個二維數組有3個一維數組的元素 //每個一維數組有2個元素 //輸出二維數組名稱 System.out.println(arr); //地址值 [[I@175078b //輸出二維數組的第一個元素一維數組的名稱 System.out.println(arr[0]); //地址值 [I@42552c System.out.println(arr[1]); //地址值 [I@e5bbd6 System.out.println(arr[2]); //地址值 [I@8ee016 //輸出二維數組的元素 System.out.println(arr[0][0]); //0 System.out.println(arr[0][1]); //0 } }
格式1內存圖解:數組
二維數組格式2spa
/* 格式2: 數據類型[][] 數組名 = new 數據類型[m][]; m:表示這個二維數組有多少個一維數組。 列數沒有給出,能夠動態的給。這一次是一個變化的列數。 */ class Array2Demo2 { public static void main(String[] args) { //定義數組 int[][] arr = new int[3][]; System.out.println(arr); //[[I@175078b System.out.println(arr[0]); //null System.out.println(arr[1]); //null System.out.println(arr[2]); //null //動態的爲每個一維數組分配空間 arr[0] = new int[2]; arr[1] = new int[3]; arr[2] = new int[1]; System.out.println(arr[0]); //[I@42552c System.out.println(arr[1]); //[I@e5bbd6 System.out.println(arr[2]); //[I@8ee016 System.out.println(arr[0][0]); //0 System.out.println(arr[0][1]); //0 //ArrayIndexOutOfBoundsException //System.out.println(arr[0][2]); //錯誤 arr[1][0] = 100; arr[1][2] = 200; } }
二維數組格式2 內存圖解:code
二維數組格式3 對象
/* 格式3: 基本格式: 數據類型[][] 數組名 = new 數據類型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}}; 簡化版格式: 數據類型[][] 數組名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}}; 舉例: int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}; int[][] arr = {{1,2,3},{4,5},{6}}; */ class Array2Demo3 { public static void main(String[] args) { //定義數組 int[][] arr = {{1,2,3},{4,5},{6}}; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[0][0]); //1 System.out.println(arr[1][0]); //4 System.out.println(arr[2][0]); //6 System.out.println(arr[0][1]); //2 System.out.println(arr[1][1]); //5 //越界 System.out.println(arr[2][1]); //錯誤 } }
二維數組格式3 內存圖解:blog
遍歷二維數組內存
/* 需求:二維數組遍歷 外循環控制的是二維數組的長度,其實就是一維數組的個數。 內循環控制的是一維數組的長度。 */ class Array2Test { public static void main(String[] args) { //定義一個二維數組 int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}; //用方法改進 //調用方法 printArray2(arr); } /* 需求:遍歷二維數組 兩個明確: 返回值類型:void 參數列表:int[][] arr */ public static void printArray2(int[][] arr) { for(int x=0; x<arr.length; x++) { for(int y=0; y<arr[x].length; y++) { System.out.print(arr[x][y]+" "); } System.out.println(); } } }
二維數組求和:io
/* 公司年銷售額求和 某公司按照季度和月份統計的數據以下:單位(萬元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99 分析: A:把題目的數據用二維數組來表示 int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}}; B:如何求和呢? 求和其實就是獲取到每個元素,而後累加便可。 C:定義一個求和變量sum,初始化值是0。 D:經過遍歷就能夠獲得每個二維數組的元素。 E:把元素累加便可。 F:最後輸出sum,就是結果。 */ class Array2Test2 { public static void main(String[] args) { //把題目的數據用二維數組來表示 int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}}; //定義一個求和變量sum,初始化值是0。 int sum = 0; //經過遍歷就能夠獲得每個二維數組的元素。 for(int x=0; x<arr.length; x++) { for(int y=0; y<arr[x].length; y++) { //把元素累加便可。 sum += arr[x][y]; } } //最後輸出sum,就是結果。 System.out.println("一年的銷售額爲:"+sum+"萬元"); } }
二維數組樹出楊輝三角:打印楊輝三角形(行數能夠鍵盤錄入)class
/* 需求:打印楊輝三角形(行數能夠鍵盤錄入) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 分析:看這種圖像的規律 A:任何一行的第一列和最後一列都是1 B:從第三行開始,每個數據是它上一行的前一列和它上一行的本列之和。 步驟: A:首先定義一個二維數組。行數若是是n,咱們把列數也先定義爲n。 這個n的數據來自於鍵盤錄入。 B:給這個二維數組任何一行的第一列和最後一列賦值爲1 C:按照規律給其餘元素賦值 從第三行開始,每個數據是它上一行的前一列和它上一行的本列之和。 D:遍歷這個二維數組。 */ import java.util.Scanner; class Array2Test3 { public static void main(String[] args) { //建立鍵盤錄入對象 Scanner sc = new Scanner(System.in); //這個n的數據來自於鍵盤錄入。 System.out.println("請輸入一個數據:"); int n = sc.nextInt(); //定義二維數組 int[][] arr = new int[n][n]; //給這個二維數組任何一行的第一列和最後一列賦值爲1 for(int x=0; x<arr.length; x++) { arr[x][0] = 1; //任何一行第1列 arr[x][x] = 1; //任何一行的最後1列 } //按照規律給其餘元素賦值 //從第三行開始,每個數據是它上一行的前一列和它上一行的本列之和。 for(int x=2; x<arr.length; x++) { //這裏若是y<=x是有個小問題的,就是最後一列的問題 //因此這裏要減去1 //而且y也應該從1開始,由於第一列也是有值了 for(int y=1; y<=x-1; y++) { //每個數據是它上一行的前一列和它上一行的本列之和。 arr[x][y] = arr[x-1][y-1] + arr[x-1][y]; } } //這個時候,要注意了,內循環的變化必須和曾經講過的九九乘法表相似 for(int x=0; x<arr.length; x++) { for(int y=0; y<=x; y++) { System.out.print(arr[x][y]+"\t"); } System.out.println(); } } }