二维数组
数据类型 变量 = 初始化;
数据类型 - 八种基本数据类型以及对象类型
数组本身就是属于对象类型
int[] arr = new int[3];//arr的数据类型int[],整数型数组,int型数组
元素类型[] 变量名 = new 元素类型[数组长度];
int[][] 变量名 = new int[rows][cols] 元素类型决定了数组中可以存放的数据的类型 二维数组中的每个元素就是一维数组
定义一个3行2列的int型二维数组
int[][] arr = new int[3][2]; int arr[][] = new int[3][2];
赋值方式
通过下标一一赋值
int[][] arr = new int[3][2]; arr[0][0]=100;
定义二维数组的同时进行赋值
int[][] arr = {{1,2},{3,4},{5,6}}; int[][] arr2 = new int[][]{{1,2},{3,4},{5,6}};
先定义一个数组,然后是一行一行赋值
int[][] arr = new int[3][3]; arr[0] = {1,2,3};//error arr[0] = new int[]{1,2,3};//ok
定义一个不规则的二维数组
列可以省略不写 int[][] arr4 = new int[3][]; arr4[0] = new int[]{1}; arr4[1] = new int[]{1,2}; arr4[2] = new int[]{1,3,1};
遍历方式
通过下标一一输出
通过单层for循环
for (int i = 0; i < arr.length; i++) { System.out.println(Arrays.toString(arr[i])); }
双层for循环
for (int i = 0; i < arr.length; i++) { //int[] temp = arr[i]; for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j]+"\t"); } System.out.println(); }
java.util.Arrays工具类中
System.out.println(Arrays.deepToString(arr));
增强for循环
for(元素类型 变量:数组对象名){ } for (int[] ints : arr) { // System.out.println(ints); for (int r : ints) { System.out.print(r+"\t"); } System.out.println(); }
练习题
String[][] arr = new String[4][6];
arr[0]=new String[]{"白","日","依","山","尽",","};
arr[1]=new String[]{"黄","河","入","海","流","."};
arr[2]=new String[]{"欲","穷","千","里","目",","};
arr[3]=new String[]{"更","上","一","层","楼",","};
package tech.aistar.day04;
/**
* 本类用来演示: 古诗词 横变竖
* @date: 2021/7/20 3:06 下午
*/
public class PoemsDemo {
public static void main(String[] args) {
String[][] arr = new String[4][6];
arr[0]=new String[]{"白","日","依","山","尽",","};
arr[1]=new String[]{"黄","河","入","海","流","."};
arr[2]=new String[]{"欲","穷","千","里","目",","};
arr[3]=new String[]{"更","上","一","层","楼",","};
change(arr);
}
public static void change(String[][] arr){
String[][] temp = new String[6][4];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
temp[j][i] = arr[i][j];
}
}
for (int i = 0; i < temp.length; i++) {
for (int j = 0; j < temp[i].length; j++) {
System.out.print(temp[i][j]+"\t");
}
System.out.println();
}
}
}
作业
http://xzc.cn/EhC5y656uG A B C
二维数组输出直角的杨辉三角
将1~5之间的随机整数,存储到一个长度为15的一维数组中.写一段程序.
统计每个随机数在这个数组中出现的次数.并且根据出现的次数进行降序排列.
arr -> {1,2,1,2,3,4,1,2,1,1,1...} 数组去重 - 个数temp -> {1,2,3,4} two[i] = new int[]{temp[i],count}; int[][] two = new int[?][2]; 排序