java——二维数组基础知识

本文详细介绍了Java中二维数组的声明方法(静态和动态)、初始化方式、通过索引和各种循环结构的访问,以及在编程过程中可能遇到的输入类型不匹配、数组越界和空指针异常等运行时异常处理。
摘要由CSDN通过智能技术生成

一:声明

仿照一维数组的声明方式 :        数据类型 [ ] 数组名 : 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

  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值