一:声明
仿照一维数组的声明方式 : 数据类型 [ ] 数组名 : int [ ] array ;
二维数组的声明方式: 数据类型 [ ][ ] 数组名 ; int[ ] [ ] array ;
二:初始化
静态初始化:
有长度有元素
int [ ][ ] array = new int { { 1,3,5} , {22,33,44 } , {232,45,77 } , {83,66,33 } } ;
存储示意图:
以 int [ ][ ] array=new int [3] [2] { {11,32} , {44,28} , {87,63} } 为例 ;
动态初始化:
有长度无元素
(1) int [ ][ ] array = new int [ 5 ][ 3 ] ;
(2) int [ ][ ] array= new int[ 5 ][ ] , array [ 0 ] = new int [ 3 ] , array[ 1 ] = new int [ 8 ] ...... ;
存储示意图
以 int [ ][ ] array = new int [3][ ] ,
array [ 0 ] = new int [3 ] , array [ 2 ] = new int [ 3 ] 为例;
案例:
如下代码:
class DoubleArrayTwo{
public static void main(String[] args){
int[][] array=new int[3][2];
array[0][0]=10;
array[0][1]=20;
array[1]=array[0];
array[0]=new int[4];
array[0][0]=100;
System.out.println(array[1][0]);
}
}
输出结果为:
int[][] array=new int[3][2];
我们来详细了解这个过程;
当然,如果输出 array[0][0] 的话,值该为 100 ;
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=5871:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.DoubleArrayTwo
10
array[0][0]:100
Process finished with exit code 0
三:访问
根据 索引 进行访问 , 如 array [i] [j] ;i 代表大数组的位置,j 代表 小数组的位置;
四:遍历
如下:
(1)双层 for 循环遍历
//二维数组的访问
class DoubleArray{
public static void main(String[] args){
int[][] array={{1,2,3},{3,4,5},{9}};
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
System.out.println(array[i][j]);
}
}
}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=11656:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.DoubleArray
1
2
3
3
4
5
9
Process finished with exit code 0
当然,也可以如下遍历:(有点麻烦)
//二维数组的访问
class DoubleArray{
public static void main(String[] args){
int[][] array={{1,2,3},{3,4,5},{9}};
for(int i=0;i<array.length;i++){
int[] array1=array[i];
for(int j=0;j<array1.length;j++){
System.out.print(array1[j]+"\t");
}
System.out.println(" ");
}
}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=12057:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.DoubleArray
1 2 3
3 4 5
9
Process finished with exit code 0
(2) 增强 for 循环 遍历
//二维数组的访问
class DoubleArray{
public static void main(String[] args){
int[][] array={ {1,2,3},{3,4,5},{9} } ;
for(int[] array1:array){
for(int value:array1){
System.out.print(value+"\t");
}
System.out.println(" ");
}
}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=12436:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.DoubleArray
1 2 3
3 4 5
9
Process finished with exit code 0
五:异常小总结(运行时)
(1) IputMisMartchException
输入类型不匹配:int a = scn.nextInt ( ) ;
class Test{
public static void main(String[] args) {
Scanner scn=new Scanner(System.in);
int a=scn.nextInt();
System.out.println(a);
}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=5542:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.Test
a
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Maycode.Test.main(FirstDemo.java:795)
Process finished with exit code 1
(2) ArraySizeOutOfBoundsException
数组索引越界:int [ ] a ={3,5,6} ;System.out.print( a [ 6 ] ) ;
class Test{
public static void main(String[] args) {
int[] array=new int[6];
System.out.println(array[6]);
}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=5302:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.Test
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6
at Maycode.Test.main(FirstDemo.java:795)
Process finished with exit code 1
(3) NegativeArraySizeException
数组长度不合法:int [ ] a = new int [ -10 ] ;
class Test{
public static void main(String[] args) {
int[] array=new int[-10];
System.out.println(array.length);
}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=5215:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.Test
Exception in thread "main" java.lang.NegativeArraySizeException: -10
at Maycode.Test.main(FirstDemo.java:794)
Process finished with exit code 1
(4) NullPointException
空指针异常:int [ ] array = null ; array[2] = 10 ;
class Test{
public static void main(String[] args) {
int[] array=null;
array[1]=11;//空元素不能拿来再用
System.out.println(array[0]);
}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=7534:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.Test
Exception in thread "main" java.lang.NullPointerException: Cannot store to int array because "array" is null
at Maycode.Test.main(FirstDemo.java:795)
Process finished with exit code 1