一、基本概念
集中存储相同类型数据的容器叫做数组。
数组的特点:
a. 存储数据长度固定的容器(数组的长度一旦定义不可变!),数组是一个定长容器。
b. 存储数据的数据类型要一致。
二、数组动态初始化
1.含义: 只指定数组长度不指定数组元素值.
2.数组的定义:
数据类型[] 数组名称 = new 数据类型[数组长度]; // 更常见
数据类型 数组名称[] = new 数据类型[数组长度];
3.详细解释:
数据类型: 创建的数组容器可以存储什么数据类型 基本数据类型8个、String
[]: 表示数组
数组名称: 数组本身也是一个变量,用于存储数组的地址的变量名
=: 赋值符号,将数组的地址,赋值给数组名称
new: 关键字,创建数组使用的关键字,用于在堆内存中给数组开辟存储数据的空间
数据类型: 和前面的数据类型保持一致
数组长度: 表示数组容器中可以存储多少个元素
4.举例:
int[] arr = new int[3];
定义出一个数组,数组名arr, 数组中可以存储3个int类型整数
public class S0508{
public static void main(String[] args) {
//数据类型[] 数组名称 = new 数据类型[数组长度];
int[] arr = new int[10];
//取数据 第五个值 index索引 01234
System.out.println(arr[4]);
//添数据
arr[4] = 10086;
System.out.println(arr[4]);
//new 实例化 - 初始化 - 创建 - 在堆内存中开辟空间
}
}
下面是代码结合jdk1.6JVM运行内存的图,可以详细的展示数组的存储情况。
这里先是new了个数组,内存地址存储在堆内存中,这里如果执行“System.out.println(arr)”会输入arr在堆内存里的地址,就是上图黄色指针指着的地方。
三、数组的访问格式
3.1.索引
每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index)。可以通过数组的索引访问到数组中的元素.索引的范围: 0---数组长度-1. 注: 索引也称为下标,角标,脚标。
3.2.索引访问数组中的元素
数组名[索引] = 数值; //为数组中的元素赋值
变量 = 数组名[索引]; //获取出数组中的元素
3.3扩展
当定义出一个数组时, JVM虚拟机会默认为数组中的每一个元素进行默认的赋初值动作, 根据不同数组中的数据类型不同,默认值也不同,下面是常见数据类型的默认值:
整数 : 0,
浮点类型 : 0.0
char类型 : ‘ ’
boolean类型 : false
引用数据类型 : null, null表示引用数据类型为空
下面举个代码案例:
题目:定义一个和尚数组,10个和尚,分别将和尚的名字存储到数组中,并打印 第1、6、10个和尚的名字。
class S0506 {
public static void main(String[] args) {
int[] arr0 = new int[10];
//取第一个值
//虽然长度为10 但是数组为了大家存取方便,每一个值都会对应一个索引index
//索引和值不同,默认从0开始
System.out.println(arr0[0]);
//存一个值 也是通过索引直接再指定位置存放数据
arr0[1] = 12;
System.out.println(arr0[1]);
//通过循环取值
for(int i = 0; i < arr0.length; i++){
System.out.println(arr0[i]);
}
//操作数组直接通过索引就可以 数组名称[index]
}
四、数组静态初始化
1.含义: 在创建数组时,直接将元素确定的定义方式
2.格式:
数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, ..., 元素n};
注意事项:
1)在第二个方括号中,不能写数组元素个数
2)元素值的罗列,元素和元素之间,使用逗号分隔
3)罗列出来的元素值,数据类型必须和声明数组时数据类型一致
3.简化格式:
数据类型[] 数组名 = {元素1, 元素2, ..., 元素n};
注意事项: 不能分成两行写,测试:先定义后赋值!不符合Java中定义数组的语法结构
下面是代码案例:
class S0507 {
public static void main(String[] args) {
//int[] arr0 = new int[]{334,11,67,11,0,3};
int[] arr0 = {334,11,67,11,0,3};
//通过循环取值
for(int i = 0; i < arr0.length; i++){
System.out.println(arr0[i]);
}
}
}