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 @   闫闫不是那个严  阅读(31)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示