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(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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的设计差异