标签:arr Java 一维 int 二维 数组 new 随笔
Java的二维数组
我们可以吧二维数组理解成为,原来的一维数组中的每一个元素里又存放了一个一维数组,然后就构成了二维数组。就是数组里面又套了一个数组
二维数组也类似于以前小时候学的二维直角坐标系(XY轴),每个X轴和Y轴对应的位置就是一个二维数组元素。
1、二维数组的定义
二维数组的定义和一维数组一样,也是要先声明后开辟内存空间才能使用
int[][] arr1;//声明
arr1 = new int[3][3]//再开空间
//声明和开辟空间写在一起:
//数据类型[][] 数组名 = new 数据类型[行数][列数]
int[][] arr = new int[6][6];//定义了一个6行6列的二维数组
2、二维数组的初始化
静态初始化
int[][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
//定义了一个二维数组,其中里面有4个一维数组,每个一维数组里面有4个元素
//也可以理解为定义了两个4行4列的二维数组
动态初始化
String[][] b=new String[10][10];//定义了一个二维数组,其中里面有10个一维数组,每个一维数组里面有10个元素
b[0]=new String[]{"刘备","关羽","张飞"};//第一行
b[1]=new String[]{"Java","PHP","c++"};//第二行
3、二维数组的遍历
//例子
public class demo01 {
public static void main(String[] args) {
//静态初始化
int[][] a={{1,2,3,4},{4,5,6,7},{8,9,10,11},{10,11,12,13}};
//遍历
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
//arr[i].length 相当于得到了 对应的 每个一维数组的长度,arr[i]就是拿到其中的一个一维数组的意思
System.out.print(a[i][j]+" ");
}
System.out.println();//换行
}
}
}
4、关于二维数组的关键概念
- 二维数组的每一个元素都相当于一个一维数组
int[][] arr = {{1,2,1,2,1,2},{3,4,3,4,3,4},{5,6,5,6,5,6},{7,8,7,8,7,8}}
System.out.println("二维数组的元素个数=" + arr.length);//arr.length = 4;
//输出结果
//二维数组的元素个数=4
- 二维数组的没一个元素是一维数组,所以需要得到每一个一维数组的值还需要再次遍历
- 数组的索引(下标)都是从0开始的
//arr[1][1]表示第二行第二个元素
5、动态初始化-列数不确定
public class TwoDimensionalArray {
public static void main(String[] args) {
//创建 二维数组,一共有3个一维数组,但是每一个一维数组还没有开数据空间
int[][] arr = new int[3][];//! ! 列数不确定 ! !
/*
要求输出数组:
i=0: 1
i=1: 2 2
i=3; 3 3 3
*/
for (int i = 0; i < arr.length; i++) {//遍历arr每个一维数组
//给每个一维数组开空间 new
//如果没有给一维数组 new,那么 arr[i]就是null
arr[i] = new int[i + 1];
//遍历一维数组,并给一维数组的每个元素赋值
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = i + 1;//赋值
}
}
//遍历输出
System.out.println("最终二维数组为:");
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
结果:
标签:arr,Java,一维,int,二维,数组,new,随笔 来源: https://www.cnblogs.com/YeJ1an/p/16685272.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。