二维数组学习笔记
1.概述
二维数组存是储一维数组的数组
1.1 格式
1.1.1 常用格式
数据类型[ ] [ ] 变量名;
示例:int [ ] [ ] arr;
1.1.2 其他格式
A. 数据类型 变量名[] [] ;
示例:int arr [] [];
B. 数据类型 [] 变量[];
示例:int[] arr[];
2.二维数据的初始化
2.1 动态初始化
2.1.1 格式
数据类型 [] [] 变量名 = new 数据类型[m] [n];
m表示这个二维数组,可以存放多少个一维数组
n表示每一个一维数组可以存放多少个元素
示例:
int[][] arr =new int[2][3];
//该数组有两个一维数组,每一个一维数组可以存储3个s
示例:
package com.huly.twoarray;
public class TDArray {
public static void main(String[] args) {
int[][] arr = new int[2][3];
System.out.println(arr);
/*
此处输出结果为:[[I@1b6d3586
[[指的是此数组为二维数组
I指的是数据的数据类型
@是隔断符
1b6d3586是十六进制内存地址
*/
System.out.println("-------");
System.out.println(arr[0]);
System.out.println(arr[1]);
//这两句打印的是对应一维数组的地址:[I@4554617c、[I@74a14482
/*
system.out.println(arr[2]);//此句不注释掉的话运行到此处时程序停止并报错,但此程序可以被启动
*/
System.out.println("---------");
System.out.println(arr[0][1]);
/*
想要获取二维数组中的元素需要在在一维数组的后面再加上索引,代表着对应一位数组里第2个元素
由于数组动态初始化是指定数组长度,所以系统会自动给数组里的元素默认赋值为零,所以此处结果也为零
*/
arr[0][1] = 1;//此处是给二维数组中的元素赋值
System.out.println(arr[0][1]);//输出结果为:1
}
}
2.1.2 注意事项
-
二维数组中存储的是一维数组,可以先创建好一维数组再放入二维数组中;
-
二维数组不能存入超过定义长度的数据
-
创建好的一维数组长度比定义的二维数组长度长,不影响将一维数组放入二维数组中存储,因为一维数组是将地址赋值给了二维数组,本身一维数组已经在内存空间中开辟好了空间,二维数组根据地址值可以直接取出相应数据。
示例:
package com.huly.twoarray;
public class TDArray2 {
public static void main(String[] args) {
int arr1[] = {1,2,3};
int arr2[] = {4,5,6,7};//程序运行时,这俩一维数组先在堆内存中开辟空间存入数据
int arr3[][] = new int[2][3];//定义二维数组包含两个一维数组,每个一维数组长度是3
arr3[0] = arr1;//将一维数组arr1的地址赋值给二维数组的第一个一维数组
arr3[1] = arr2;//将arr2的地址赋值给二维数组arr的第二个一维数组
System.out.println(arr3[0][1]);
System.out.println(arr3[1][3]);
//arr3[1]等效与arr2,后面再带一个[3],即可访问arr2的第四个元素
}
}
2.2 静态初始化
2.2.1 格式
数据类型 [] [] 变量名 = new 数据类型{{元素1,元素2······},{元素1,元素2······},······};
示例:
int[][] arr = new int {{1,2},{3,4}};
int[][] arr = {{1,2},{1,2}};
注意事项:二维数组静态初始化时,可以先将一维数组赋值,然后再将一维数组赋值给二维数组
示例:
int[][] arr1 = {1,2};int[][] arr2 = {3,4};
int arr[][] = {arr1,arr2};
3.数组的使用
3.1 数组遍历
package com.huly.twoarray;
public class TDArray2 {
public static void main(String[] args) {
int arr1[] = {1,2,3};
int arr2[] = {4,5,6,7};
int arr3[][] = new int[2][3];
arr3[0] = arr1;
arr3[1] = arr2;
System.out.println(arr3[0][1]);
System.out.println(arr3[1][3]);
for (int i = 0; i < arr3.length; i++) {
for (int j = 0; j <arr3[i].length ; j++) {
System.out.println(arr3[i][j]);
}
}
}
}
3.2 二维数组求和
package com.huly.twoarray;
import java.util.Scanner;
public class sumTDArray {
public static void main(String[] args) {
int sum = 0;
Scanner sc = new Scanner(System.in);
int[][] arr1 = new int[3][3];
for (int i = 0; i < arr1.length; i++) {
for (int i1 = 0; i1 < arr1[i].length; i1++) {
System.out.println("入第"+(i+1)+"季度第"+(i1+1)+"月营收");
arr1[i][i1] = sc.nextInt();
}
}
for (int i = 0; i < arr1.length; i++) {
for (int i1 = 0; i1 < arr1[i].length; i1++) {
sum+=arr1[i][i1];
System.out.println(arr1[i][i1]);
}
}
System.out.println(sum);
}
}