Java基础之二维数组
二维数组概念
二维数组的概念
对于二维数组的理解,我们可以看成一位数组arrary1有作为另一个一维数组arrary2的元素存在。从底层机制来看没有多维数组概念
2二维数组的使用
二维数组的声明与初始化
如何调用指定的元素
如何获取数组的长度
数组元素默认初始化值
数组的内存解析
初始化
1 2 3 4 5 6 7 8 9 10 11 12 | 二维数组的声明与初始化 int [] arrq = new int []{ 1 , 2 , 3 }; //一维数组的静态 //动态初始化 String [][] arr3 = new String[ 3 ][]; //正确。但元素2未赋值调用会报空指针 String[][] arr2 = new String[ 3 ][ 2 ]; //正确 //调用数组元素 int [][] arr1 = new int [][]{{ 1 , 2 , 3 },{ 4 , 5 },{ 6 , 7 , 8 }}; //静态初始化 System.out.println(arr1[ 0 ][ 1 ]); 测试 2 null |
调用数组元素2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | String [][] arr3 = new String[ 3 ][]; //正确;但里面数组未赋值,不能调用 String[][] arr2 = new String[ 3 ][ 2 ]; //正确 //调用数组元素 int [][] arr1 = new int [][]{{ 1 , 2 , 3 },{ 4 , 5 },{ 6 , 7 , 8 }}; //静态初始化 System.out.println(arr1[ 0 ][ 1 ]); System.out.println(arr2[ 1 ][ 1 ]); System.out.println( "\n\n" ); //打印两个换行 arr3[ 1 ] = new String[ 4 ]; //初始化arr3[1]这个元素 //调用这个arr3[1][0]元素的值 System.out.println(arr3[ 1 ][ 0 ]); 测试 2 null null |
获取数组长度
1 2 3 4 5 6 7 8 9 | int [][] arr1 = new int [][]{{ 1 , 2 , 3 },{ 4 , 5 },{ 6 , 7 , 8 }}; //静态初始化 System.out.println( "外围数组长度: " +arr1.length); //获取外围数组的长度 System.out.println( "内层循环下标1(从0开始)的数组长度: " +arr1[ 1 ].length); //获取内层数组的长度 System.out.println( "****************************************************************" ); 测试 外围数组长度: 3 内层循环下标 1 (从 0 开始)的数组长度: 2 **************************************************************** |
遍历二维数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | for ( int i = 0 ; i<arr2.length;i++){ for ( int z= 0 ; z<arr2[i].length;z++){ //System.out.println(arr2[i]); System.out.println( "********" ); System.out.println(arr2[i][z]); } } 测试 ******** null ******** null ******** null ******** null ******** null ******** null |
默认初始化值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | String[][] arr2 = new String[ 3 ][ 2 ]; //正确 for ( int i = 0 ; i<arr2.length;i++){ for ( int z= 0 ; z<arr2[i].length;z++){ System.out.println(arr2[i]); //内存地址 System.out.println( "********" ); System.out.println(arr2[i][z]); //null } } 测试 [Ljava.lang.String; @1540e19d ******** null [Ljava.lang.String; @1540e19d ******** null [Ljava.lang.String; @677327b6 ******** null [Ljava.lang.String; @677327b6 ******** null [Ljava.lang.String; @14ae5a5 ******** null [Ljava.lang.String; @14ae5a5 ******** null |
打印杨晖三角
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | for ( int i= 0 ; i<yanghuisanjiao.length;i++){ yanghuisanjiao[i] = new int [i+ 1 ]; //连续赋值 yanghuisanjiao[i][ 0 ] = yanghuisanjiao[i][i] = 1 ; if (i> 1 ){ for ( int j = 1 ; j<yanghuisanjiao[i].length- 1 ;j++ ){ yanghuisanjiao[i][j]= yanghuisanjiao[i- 1 ][j- 1 ]+ yanghuisanjiao[i- 1 ][j]; } } } for ( int i = 0 ; i<yanghuisanjiao.length;i++){ for ( int j= 0 ; j<yanghuisanjiao[i].length;j++){ System.out.print(yanghuisanjiao[i][j]+ " " ); } System.out.println(); } 测试 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 |
草都可以从石头缝隙中长出来更可况你呢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏