多维数组可以看成以数组为元素的数组。可以有二维、三维、甚至更多维数组,但是实际开发中用的非常少。最多到二维数组(学习容器后,我们一般使用容器,二维数组用的都很少)。
【示例1】二维数组的声明
public class Test{ public static void main(String[] args) { //Java中多维数组的声明和初始化应按从低维到高维的顺序进行 int [][] a=new int[3][]; a[0]=new int[2]; a[1]=new int[4]; a[2]=new int[3]; //int t1[][]=new int[][4];//非法 } } |
【示例2】二维数组的静态初始化
public class Test{ public static void main(String[] args) { int[][] a = { {1,2,3}, {3,4}, {3,5,6,7} }; System.out.println(a[2][3]); } } |
示例2 内存分析图
【示例3】动态初始化
import java.util.Arrays; public class Test { public static void main(String[] args) { int[][] a = new int[3][]; // a[0] = {1,2,5}; //错误,没有声明类型就初始化 a[0] = new int[] { 1, 2 }; a[1] = new int[] { 2, 2 }; a[2] = new int[] { 2, 2, 3, 4 }; System.out.println(a[2][3]); System.out.println(Arrays.toString(a[0])); System.out.println(Arrays.toString(a[1])); System.out.println(Arrays.toString(a[2])); } } |
示例3 运行效果图
【示例4】获取数组长度
//获取的二维数组第一维数组的长度。 System.out.println(a.length); //获取第二维第一个数组长度。 System.out.println(a[0].length); |
数组存储表格数据
表格数据模型是计算机世界最普遍的模型,可以这么说,大家在互联网上看到的所有数据本质上都是“表格”,无非是表格之间互相套用。如下表格是一张雇员表:
ID | 姓名 | 年龄 | 职能 | 入职日期 |
1001 | 高淇 | 18 | 讲师 | 2006-2-14 |
1002 | 高小七 | 19 | 助教 | 2007-10-10 |
1003 | 高小琴 | 20 | 班主任 | 2008-5-5 |
我们观察表格,发现每一行可以使用一个一维数组存储:
Object[] a1 = {1001,"高淇",18,"讲师","2006-2-14"};
Object[] a2 = {1002,"高小七",19,"助教","2007-10-10"};
Object[] a3 = {1003,"高小琴",20,"班主任","2008-5-5"};
注意:此处基本数据类型”1001”,本质不是Object对象。JAVA编译器会自动把基本数据类型“自动装箱”成包装类对象。大家在下一章学了包装类后就懂了。
这样我们只需要再定义一个二维数组,将上面3个数组放入即可:
Object[][] emps = new Object[3][];
emps[0] = a1;
emps[1] = a2;
emps[2] = a3;
【示例5】 二维数组保存表格数据
import java.util.Arrays; public class Test { public static void main(String[] args) {
Object[] a1 = {1001,"高淇",18,"讲师","2006-2-14"}; Object[] a2 = {1002,"高小七",19,"助教","2007-10-10"}; Object[] a3 = {1003,"高小琴",20,"班主任","2008-5-5"};
Object[][] emps = new Object[3][]; emps[0] = a1; emps[1] = a2; emps[2] = a3;
System.out.println(Arrays.toString(emps[0])); System.out.println(Arrays.toString(emps[1])); System.out.println(Arrays.toString(emps[2]));
} } |
示例5 运行效果图
「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。
笔记包含从浅入深的六大部分:
A-Java入门阶段
B-数据库从入门到精通
C-手刃移动前端和Web前端
D-J2EE从了解到实战
E-Java高级框架精解
F-Linux和Hadoop