java中第一个存储数据的容器:数组特点:1、数组的长度大小是固定的2、同一个数组中,存储的元素数据类型是一样的数组的定义语句格式:数据类型[] 数组名;举例:int[] arr; // 定义了一个可以存储int类型的一维数组,数组名叫做arr数组没有初始化,无法直接使用,数组是我们第一个接触到的引用数据类型如何对数组进行初始化?动态初始化:先规定数组的大小,数组中的元素先系统赋默认值,后续再自己赋值静态初始化:自己将数据赋值,大小由系统根据我们赋值的数量来决定JVM内存的划分:Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。栈 存储局部变量堆 存储new出来的东西方法区 (面向对象部分讲)本地方法区 (和系统相关)寄存器 (给CPU使用)动态初始化:语句定义格式:数据类型[] 数组名 = new 数据类型[数组的大小];举例:int[] arr = new int[3];白话文解释:创建了一个可以存储3个int类型元素大小的数组,数组名叫做arr专业术语解释:在堆内存中开辟一个连续空间大小为3的数组对象,将地址值赋值给栈内存中arr变量
举例:int[] arr = new int[3];左边:int: 表示存储元素的数据类型[]: 表示这是一个一维数组arr: 数组名,符合标识符的命名规则,相当于变量名右边:new: 在堆内存中开辟空间,将来看到new,就意味着在堆内存中开辟空间int: 表示存储元素的数据类型[]: 表示这是一个一维数组3: 表示该数组最多可以存储3个元素,数组长度为3如何获取数组中的元素?java中的数组具有索引下标的概念,可以通过索引获取对应位置上的元素,索引是从左向右,从0开始的索引最大值 = 长度-1语句定义格式:数组名[索引]静态初始化:语句定义格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,....};举例:int[] arr1 = new int[]{11,22,33,44,55,66};简化格式:数据类型[] 数组名 = {元素1,元素2,元素3,....};举例: int[] arr1 = {11,22,33,44,55,66};注意:静态初始化简化写法,无法拆开进行初始化,必须将初始化与定义在同一行,由一个赋值=语句进行赋值;而非简化写法,可以拆开定义和初始化。二维数组:元素为一维数组的数组语句定义格式1:数据类型[][] 变量名 = new 数据类型[m][n];举例:int[][] arr = new int[3][4];创建了可以存储3个长度为4的一维数组的数组,元素的类型是int类型二维数组的语句定义格式2:当二维数组中的每个一维数组的长度不一样的时候,可以采用该种方式定义数据类型[][] 变量名 = new 数据类型[m][];m: 指的是二维数组中可以存储m个一维数组将来我们可以自己创建一维数组,将地址值赋值给对应的二维数组中的元素创建二维数组的同时,赋值一维数组语句定义格式3:数据类型[][] 变量名 = new 数据类型[][]{{元素1,元素2,元素3,...}, {}, {},...};简化数据类型[][] 变量名 = {{元素1,元素2,元素3,...}, {}, {},...};
二维数组的遍历
public class Array2Test1 {public static void main(String[] args) {//创建一个二维数组int[][] arr6 = {{11, 22, 33, 44}, {1, 2, 3}, {100, 200, 300, 400, 500}};for (int i = 0; i < arr6.length; i++) { // 外层循环控制的是遍历第几个一维数组元素for (int j = 0; j < arr6[i].length; j++) { // 内层循环控制的是每一个一维数组中元素的遍历if (j == 0) {System.out.print("[" + arr6[i][j] + ", ");} else if (j == arr6[i].length - 1) {System.out.print(arr6[i][j] + "]");} else {System.out.print(arr6[i][j] + ", ");}}//换行System.out.println();}}
}