JAVA学习第四天

一、今天学了什么

1.二维数组

必须注意动态初始化方式2的各种使用情况!

(1)声明和初始化

int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};//静态初始化,类似嵌套

int[][] arr4 = {1,2,3},{4,5},{6,7,8};//类型推断

String[][] arr2 = new String[3][2];//动态初始化方式1
String[][] arr3 = new String[3][];//动态初始化方式2

注意:在声明和初始化中,[]可以放在类型名后,也可以放在数组名后。

(2)元素调用

System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//null
System.out.println(arr3[1][0]);//报错,空指针异常。若要使用必须提前指定该数组的

(3)获取长度 

System.out.println(arr1.length);//3
System.out.println(arr[0].length);//3
System.out.println(arr[1].length);//2

(4)遍历数组

for(int i = 0; i < arr1.length; i++)
{
   for(int j =0; j < arr1[i].length; j++)
   {
       System.out.print(arr1[i][j] + "     ");
   }
}
//输出为:
/*1 2 3
4 5
6 7 8*/

(5)数组元素默认初始化值

int[][] arr5 = new int[4][3];
System.out.println(arr5[0]);//地址值(一维)
System.out.println(arr5[0][0]);//0
//int、String、float、double类型内层的都与int类型一致,与所对应一维数组默认初始化值相同
System.out.println(arr5);//也是地址值(二维)这两处地址不同

//但是必须要注意,使用第二种动态初始化方法时,输出将于上述不同
double[][] arr6 = new double[4][];
System.out.println(arr6[1]);//null。因为其每一个外层都应该是一个数组,数组属于引用类型,引用类型的默认初始值为null!
System.out.println(arr6[1][0]);//报错,空指针异常。

小总结:

针对动态初始化方式1:

外层:地址值;

内层:与一维数组初始化相同。

针对动态初始化方式2:

外层:null;

内层:不能调用,否则报错。

2.杨辉三角小练习:

打印一个10行的杨辉三角

代码如下:

int[][] num = new int[10][];
        for(int i = 0; i < 10; i++)
        {
            num[i] = new int[i+1];
            num[i][0] = 1;
            num[i][i] = 1;
            if(i > 1)
            {
                for(int j = 1; j < num[i].length-1; j++)
                {
                    num[i][j] = num[i-1][j-1] + num[i-1][j];
                }
            }
        }
        for(int i = 0; i < num.length; i++)
        {
            for(int j = 0; j < num[i].length; j++)
            {
                System.out.print(num[i][j]+"  ");
            }
            System.out.println();
        }

 

 

 

posted @ 2021-07-07 15:22  闫闫不是那个严  阅读(29)  评论(0编辑  收藏  举报