共计 1698 个字符,预计需要花费 5 分钟才能阅读完成。
java13 编程基础之数组深入
大纲
一维数组
概述
数组是相同类型数据的有序集合 。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标) 来访问它们。
这些按序排列的同类数据元素的集合称为数组“[]”。
特点
- 定长
长度一旦确定不可以改变。
- 相同数据类型
其元素必须是 相同 类型, 不允许出现混合类型。数组中的元素可以是任何数据类型,包括基本类型和引用类型。
- 位置有序
元素所在的位置是有序的。
- 数组本身属于引用类型
数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象 Java 中对象是在堆中的,因此数组无论保存基本类型还是其他对象类型,数组对象本身是在堆中的。
- 数组中可以存储任意类型的数据
定义
数组声明格式
数据类型[] 数组名称; -- 推荐使用
数据类型 数组名称[];
double[] arr;
char arr2[];
注意 : 引用数据类型只声明不赋值存在默认值 null
数组初始化
动态初始化
数组定义与为数组元素分配空间和赋值的操作分开进行
数据类型[] 数组名 =new 数据类型[长度];
int[] data = new int[5];
注意:元素为引用数据类型的数组中的每一个元素都需要实例化。
Person[] people; // 声明说组
people = new Person[3]; // 创建数组
people[0] = new Person(); // 数组中元素实例化
people[1] = new Person();
people[2] = new Person();
静态初始化
在定义数组的同时就为数组元素分配空间并赋值
数据类型[] 数组名 =new 数据类型[]{值 1, 值 2...};
数据类型[] 数组名 ={值 1, 值 2...}; -- 当面的简写方式
int[] arr=new int[]{1,3,4,6};
int[] arr2={1,2,3,4,5};
注意 :
对于返回值类型为数组类型的方法来说,我们可以return new int[3];
,我们也可以return new int[]{1, 2, 3};
,但我们不可以return {1, 2, 3};
。即简写方式,其不能脱离数组的声明,{1, 2, 3}
并不能返回一个数组对象。
一维数组对象演示图
数组的默认值
数组中的元素只声明不赋值存在默认值,数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化。
一般规律为数值型数组默认值为 0,引用型数组默认值为 null:
数组类型 | 默认初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
char | 编码为 0 的字符 |
String(引用类型) | null |
float | 0.0 |
double | 0.0 |
boolean | false |
使用
数组元素的界限
定义并用 new 为之分配空间之后,才可以引用数组中的每个元素,数组元素的引用方式为:
arrayName[index];
index 为数组元素下标 | 索引,可以是整型常量或整型表达式 , 可以根据数组元素的下标操作数组中数据。如:
arr1[3] = 5; // 为数组索引为 0 的空间位置赋值
arr2[0] = "张三"; // 为数组索引为 0 的空间位置赋值
System.out.println(arr3[2]);// 获取数组中索引为 2 的数据值
数组元素下标从 0 开始;长度为 n 的数组的合法下标取值范围为
0~n-1
每个数组都有一个属性 length 指明它的长度
a.length 的值为数组 a 的长度(元素的个数)
数组元素遍历方式
(1)普通 for 循环
for(int 索引 =0;索引 < 长度; 索引 ++){数组名称[索引] = 值;}
int[] arr={1,2,3,4};
//1. 遍历数组 --- 基本 for 循环
for(int i=0;i<arr.length;i++){
// 变量 i 代表索引 / 元素的下标
System.out.println(arr[i]);
}
(2)增强 for 循环
for(元素类型 局部变量:数组){局部变量 --> 为数组中的每一个元素值, 从左向右以此获取}
//2. 遍历数组 --- 增强 for 循环
for(int i : arr){System.out.println(i); // i 中存储数组的元素值, 非索引
}