java多维数组定义_java基础数组的定义与多维数组
1.数组定义格式分为动态和静态
(1)静态初始化的格式:两种
数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3...}
//⽰例
int[] arr = new int[]{10,20,30,40};
数据类型[] 数组名 = {元素1, 元素2, 元素3...};
//⽰例
int[] arr = {10,20,30,40};
(2)数组的动态定义格式
数据类型[]  数组名 = new 数据类型[数组长度];
数据类型 变量名[] = new 数据类型[数组长度];了解即可
//数组动态初始化
//⽰例
//定义长度为3的int数组
int[] arr = new int[3];
//定义长度为5的double数组
double[] arr = new double[5];
//定义长度为5的char数组
char[] arr = new char[5];
//定义长度为4的字符串数组
String[] arr = new String[4];
(3)数组的索引值的特点?
数组的索引是从0开始,每次+1.
=============================================
2.多维数组
多维数组声明
数据类型[][] 数组名称;
数据类型[] 数组名称[];
数据类型数组名称[][];
以上三种语法在声明⼆维数组时的功能是等价的。同理,声明三维数组时需要三对中括号,中括号的位置可以在数据类型的后⾯,也可以在数组名称的后⾯,其它的依次类推。
例如:
int[][] map;
char c[][];
和⼀维数组⼀样,数组声明以后在内存中没有分配具体的存储空间,也没有设定数组的长度。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
多维数组初始化
和⼀维数组⼀样,多维数组的初始化也可以分为静态初始化(整体赋值)和动态初始化两种,其语法格式如下。
静态初始化
以⼆维数组的静态初始化为例,来说明多维数组静态初始化的语法格式。
⽰例代码如下:
int[][] m = {{1,2,3},{2,3,4}};
在⼆维数组静态初始化时,也必须和数组的声明写在⼀起。数值书写时,使⽤两个⼤括号嵌套实现,
在最⾥层的⼤括号内部书写数字的值。数值和数值之间使⽤逗号分隔,内部的⼤括号之间也使⽤逗号分隔。由该语法可以看出,内部的⼤括号其实就是⼀个⼀维数组的静态初始化,⼆维数组只是把多个⼀维数组的静态初始化组合起来。
同理,三维数组的静态初始化语法格式如下:
int[][][] b = {{{1,2,3},{1,2,3}},{{3,4,1},{2,3,4}}};
说明:这⾥只是演⽰语法格式,数值本⾝没有意义。
动态初始化
⼆维数组动态初始化的语法格式:
数据类型[][] 数组名称= new 数据类型[第⼀维的长度][第⼆维的长度];
数据类型[][] 数组名称;
数组名称= new 数据类型[第⼀维的长度][第⼆维的长度];
java定义一维数组并赋值
⽰例代码:
byte[][] b = new byte[2][3];
int m[][];
m = new int[4][4];
和⼀维数组⼀样,动态初始化可以和数组的声明分开,动态初始化只指定数组的长度,数组中每个元素的初始化是数组声明时数据类型的默认值。例如上⾯初始化了长度为2X3 的数组b,和4X4 的数组m。使⽤这种⽅法,初始化出的第⼆维的长度都是相同的,如果需要初始化第⼆维长度不⼀样的⼆维数组,则可以使⽤如下的格式:
int n[][];
n = new int[2][]; //只初始化第⼀维的长度
//分别初始化后续的元素
n[0] = new int[4];
n[1] = new int[3];
这⾥的语法就体现了数组的数组概念,在初始化第⼀维的长度时,其实就是把数组n 看成了⼀个⼀维数组,初始化其长度为2,则数组n 中包含的2个元素分别是n[0]和n[1],⽽这两个元素分别是⼀个⼀维数组。后⾯使⽤⼀维数组动态初始化的语法分别初始化n[0]和n[1]。
----------------------------------------------------------------------------------------------------------------------------------------------------------------
引⽤数组元素
对于⼆维数组来说,由于其有两个下标,所以引⽤数组元素值的格式为:
数组名称[第⼀维下标][第⼆维下标]
该表达式的类型和声明数组时的数据类型相同。例如引⽤⼆维数组m中的元素时,使⽤m[0][0]引⽤数组中第⼀维下标是0,第⼆维下标也是0 的元素。这⾥第⼀维下标的区间是0 到第⼀维的长度减1,第⼆维下标的区间是0 到第⼆维的长度减1。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
获得数组长度
对于多维数组来说,也可以获得数组的长度。但是使⽤数组名.length获得的是数组第⼀维的长度。如果需要获得⼆维数组中总的元素个数,可以使⽤如下代码:
int[][] m = {{1,2,3,1},{1,3},{3,4,2}};
int sum = 0;
for(int i = 0;i < m.length;i++){        //循环第⼀维下标
sum += m[i].length;                //第⼆维的长度相加
}
在该代码中,m.length 代表m 数组第⼀维的长度,内部的m[i]指每个⼀维数组元素,m[i].length 是m[i]数组的长度,把这些长度相加就是数组m中总的元素个数。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
多维数组使⽤⽰例
多维数组在实际使⽤时,更多的在于数组的设计,在实际使⽤中,⼀般对于多维数组的统计相对来说⽐⼀维数组要少⼀些,更多的设计数组的⼤⼩,并规定数组中存储值的含义,在代码中按照值的规定使⽤数组。
所以在实际使⽤多维数组以前,需要考虑清楚:
① 需要⼏维数组
② 每⼀维的长度是多少
③ 按照怎样的规则存储值
④ 数组值的意义是什么
拉丁⽅阵
要求:实现任意阶拉丁矩阵的存储和输出拉丁矩阵是⼀种规则的数值序列,例如4 阶的拉丁矩阵如下所⽰:
1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3
该矩阵中的数字很规则,在实际解决该问题时,只需要把数值的规律描述出来即可。
实现思路:声明⼀个变量n,代表矩阵的阶,声明和初始化⼀个nXn 的数组,根据数据的规律,则对应的数值为(⾏号+ 列号+ 1),当数值⽐n ⼤时,取和n的余数。
实现的代码如下:
int n = 6;
int[][] arr = new int[n][n];
int data; //数值
//循环赋值
for(int row = 0;row < arr.length;row++){
for(int col = 0;col
data = row + col + 1;
if(data <= n){
arr[row][col] = data;
}else{
arr[row][col] = data %n;
}
}
}
//输出数组的值
for(int row = 0;row < arr.length;row++){
for(int col = 0;col
System.out.print(arr[row][col]);
System.out.print(' ');
}
System.out.println();
}
该代码中变量data 存储⾏号+列号+1 的值,每次在赋值时判别data的值是否⼩于等于n,根据判断的结果赋值对应数组元素的值。在解决实际问题时,观察数字规律,并且把该规律使⽤程序进⾏表达,也是每个程序员需要的基本技能

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。