二维数组
0.数组特点
数组本身是一个引用类型
声明时必须指定长度 长度一旦确定不能再次发生改变
1.定义/声明
里面存储的类型[ 数组名字;
int[][] arrray;
2.初始化
静态 —有长度 有元素
int[][] array =[{1,2,3},{4,5,6,7},{7,8,9}};
动态----只有长度 没有元素(默认);
int[][] array =new[3][2];
array—>{{x,x},{x,x},{x,x}}—>x默认0
可能会产生一个运行时异常
NullPointerException
3.元素访问
通过元素在数组中的位置—index
array[i][j]
i控制大数组中 小数组的位置
j控制小数组中 元素的位置
4.遍历轮询
正常循环 增强for循环 嵌套完成
5.引用类型在内存中的存储结构
二维数组在内存中的存储结构
int[][] array=new int[3][2];
//3个表示有3个小数组int[]
//2表示每一个小数组中都有两个元素
//array[0][0]=10;
//array[0][1]=2 0;
public class TestArray {
public static void main(String [] args){
int[][] array=new int[3][2];
array[0][0]=10;
array[0][3]=20;
array[1]=array[0];
array[0]=new int[4];
array[0][0]=100;
System.out.println(array[1][0]); //10
//二维数组的动态初始化
// int[][] array=new int[3][];//{{10,20},{0,0},{0,0}}
//array[0]=new int[2];
//array[0][0]=10;
//array[0][4]=20;
//array[0][2]=30; //运行时异常 ArrayIndexOutOfBoundsException
/*
//1.声明----初始化(静态)
int[][] array=new int[][]{{1,2},{3,4,5,6},{7,8,9}};
//访问数组内的元素 ---index
//int value= array[0][0]; //前面表示小数组位置 后面表示小数组中元素的位置
//System.out.println(value); // 1 array[2][3] 6 array[2][2] 9
//数组的遍历/轮询
for(int i=0;i<array.length;i++){ //遍历大数组中的小数组
for(int j=0;j<array[i].length;j++){ //遍历小数组中的元素
int value=array[i][j];
System.out.print(value+"\t");
}
System.out.println();
}
System.out.println("----------------");
for(int[]arr: array){
for(int value:arr){
System.out.println(value);
}
}*/
}
}
三维数组
创建一个数组 数组内存储好多个int[][]
int[][][] array=new{{{1,2},{3,4}},{{},{}},{{},{}}}
int[][][] array=new int[3][][];
三个二维数组 每一个里面有两个一维数组 再里面有两个int元素
二维数组练习
1.模拟班级同学每周换位置
{{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}
import java.util.Scanner;
public class ChangeGroup {
public static void main(String[] args){
//创建一个二维数组 用来表示班级里的每一列同学
int[][] array={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
//设计每一周交换一次 几周?
Scanner input =new Scanner(System.in);
System.out.println("请输入一个周数,我来告诉您交换后的结果");
int week=input.nextInt(); //6
for(int i=1;i<week%4;i++){
int[] x= array[0];
array[0]=array[1];
array[1]=array[2];
array[2]=array[3];
array[3]= x;
}
for(int[] arr:array) {
for(int v: arr){
System.out.print(v+"\t");
}
System.out.println();
}
}
}