二维数组(Dyadic Array)
一维数组 : 数组中直接存放数据
二维数组 : 数组中存放数组
二维数组可以看成以数组为元素的数组。就是一个特殊的一维数组,其每一个元素都是一个一维数组
String[][] str = new String[3][4];//String类型二维数组举例
其实多维数组不仅仅只有二维数组,还有三维数组,四维数组…, 但是三维以上很少见到,所以大家重点了解二维数组即可.
1.举例
int [][] a = {
{
1,2},{
3,4,0,9},{
5,6,7}};
2.二维数组的声明
数据类型 变量名; -->变量声明
数据类型[] 数组名; -->一维数组声明
数据类型[][] 数组名; -->二维数组声明
3.二维数组的初始化
3.1.动态初始化
数组定义与为数组元素分配空间和赋值的操作分开进行
数据类型[][] 数组名 = new 数据类型[一维][二维];
注意:这种初始化方式,每一个内层的二位数组长度相同
int[][] a=new int[3][2];
a[0][0] = 1;
a[0][1] = 2;
动态初始化 : 创建二维数组的同时赋值(内部一维数组创建+每一个一维数组中的数据)
创建外层二维数组同时创建内层每一个一维刷组+没有赋值数据,存在默认值
数据类型[][] 数组名 = new 数据类型[外层二维数组长度][内层一维数组长度];
创建外层二维数组,内层每一个一维数组在后续确定时单独创建+赋值数据
数据类型[][] 数组名 = new 数据类型[外层二维数组长度][];
int[][] a=new int[3][];
arr[0]=new int[2];
arr[1]=new int[]{
3,4,5,6};
arr[2]=new int[]{
7,8,9};
arr[0][0] = 1;
arr[0][1] = 2;
3.2.静态初始化
在定义数组的同时就为数组元素分配空间并赋值
数据类型[][] 数组名 = new 数据类型[][]{
{...},{...},{...}};
数据类型[][] 数组名 = {
{...},{...},{...}}; --简化写法
int[][] arr1=new int[][]{
{
5,4,8},{
3,8},{
1}};
char[][] arr2={
{
'a'},{
'b','c'}};
4.二维数组的使用
- 根据索引进行使用
- 数组数组名 [外层二维索引] [内层一维索引]
4.1.数组的遍历
双重循环实现多维数组的遍历
/*
二维数组的遍历方式 :
1.for
2.foreach
以上两种循环任意嵌套
*/
public class ArrayTest {
public static void main(String[] args) {
int[][] arr = {
{
1,2,3},{
4,5},{
6}};
// for循环嵌套加强for
//for-->foreach
for(int i=0;i<arr.length;i++){
//
for(int j:arr[i]){
System.out.println(j);
}
}
// 两个加强for嵌套
//foreach-->foreach
for(int[] a:arr){
for(int i:a){
System.out.println(i);
}
}
}
}
public class AraayEachTest {
public static void main(String[] args) {
int[][] arr = {
{
1,2,3},{
4,5},{
6,7}};
//for嵌套for
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
//System.out.println(Arrays.deepToString(arr));//返回指定数组内容的字符串表示形式。
//for 嵌套each
for (int i = 0; i < arr.length; i++) {
for (int a:arr[i]
) {
System.out.println(a);
}
}
// //each 嵌套each
// for (int[] a:arr
// ) {
// for (int b:a
// ) {
// System.out.println(b);
// }
// }
// //each 嵌套for
// for (int[] i:arr
// ) {
// for (int j = 0; j < i.length; j++) {
// System.out.println(i[j]);
// }
// }
}
}
Arrays中提供操作多维数组的方法:
package com.arraytest;
import java.util.Arrays;//它提供的所有方法都是静态的。
public class AraayEachTest {
public static void main(String[] args) {
int[][] arr = {
{
1,2,3},{
4,5},{
6,7}};
int[][] arr2 = {
{
1,2,3},{
4,5},{
6,7}};
int[][] arr1 = {
{
1,2,3},{
4,5},{
6,