第10节数组二
数组初始化概述
Java中的数组必须先初始化,然后才能使用
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值
数组初始化方式
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[ ] 变量名=new 数据类型[ 数组长度];
范例:int[ ] arr=new int[3];
package itheima; public class ArrayDemo { public static void main(String[] args) { //动态初始化 int[] arr = new int[3]; /* * 左边: * int:说明数组中的元素类型是int类型 * []:说明这是一个数组 * arr:这是数组的名称 * 右边: * new:为数组申请内存空间 * int:说明数组中的元素类型是int类型 * []:说明这是一个数组 * 3:数组长度,其实就是数组中的元素个数 * */ } }
数组元素访问
- 数组变量访问方式
- 格式:数组名
- 数组内部保存的数据的访问方式
- 格式:数组名[索引]
- 索引是数组中数据的编号方式
- 作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名
- 特征1:索引从0开始
- 特征2:索引是连续的
- 特征3:索引逐一增加,每次加1
索引是什么? 从0开始的这个编号就是索引

package itheima; public class ArrayDemo { public static void main(String[] args) { //动态初始化 int[] arr = new int[3]; /* * 左边: * int:说明数组中的元素类型是int类型 * []:说明这是一个数组 * arr:这是数组的名称 * 右边: * new:为数组申请内存空间 * int:说明数组中的元素类型是int类型 * []:说明这是一个数组 * 3:数组长度,其实就是数组中的元素个数 * */ //输出数组名 System.out.println(arr);//输出的值为内存地址 //输出数组元素 System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); } }
内存分配
Java中的内存分配 :Java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行
了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
数组在初始化时,会为存储空间添加默认值
- 整数:默认值0
- 浮点数:默认值0.0
- 布尔值:默认值false
- 字符:默认值是空字符
- 引用数据类型:默认值是null
Java中内存分配
栈内存:存储局部变量 int[ ] arr
定义在方法中的变量,例如:arr
使用完毕,立即消失
堆内存:存储new出来的内容(实体,对象) new int[3]
数组在初始化时,会为存储空间添加默认值
整数:0
浮点数:0.0
布尔:false
字符:空字符
引用数据类型:null
每一个new出来的东西都有一个地址值
使用完毕,会在垃圾回收器空闲时被回收
数组内存图(单个数组)
int[] arr=new int[3]; //输出数组名及元素 System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); //给数组中的元素赋值 arr[0]=100; arr[2]=200; //再次输出数组名和元素 System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]);
数组内存图(多个数组)
int[] arr=new int[2]; int[] arr2=new int[3]; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr2); System.out.println(arr2[0]); System.out.println(arr2[2]); arr[1]=100; arr2[0]=200; arr2[2]=100; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr2); System.out.println(arr2[0]); System.out.println(arr2[2]);
数组内存图(多个数组指向相同)
int[] arr=new int[3]; arr[0]=100; arr[1]=200; arr[2]=300; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); //定义第二个数组指向第一个数组 int[] arr2=arr; arr2[0]=111; arr2[1]=222; arr2[2]=333; //输出两个数组的名及元素 System.out.println(arr); System.out.println(arr[0]); System.out.println(arr2); System.out.println(arr2[0]);

浙公网安备 33010602011771号