概念
- 多个相同类型数据按照一定顺序排列的集合,并使用一个名字命名,按索引进行管理。
- 数组由数组名、下标(索引)、数据、长度组成。
- 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
- 创建数组对象会在内存中开辟一整块连续的空间,数组名引用的是这块连续空间的首地址
- 数组的长度一旦确定,就不能修改。
- 可以通过下标(索引)的方式调用指定位置的元素,速度很快。
一维数组
- 一维数组的声明和初始化
int[] arr; // 声明
new int[]{1,2,3,4,5}; //静态初始化
new int[5]; // 动态初始化
int[] arr = new int[5];
int[] arr = {1,2,3,4,5}
- 如何调用数组的指定位置的元素
arr[0] = "hello";
- 如何获取数组的长度
arr.length // 5
- 如何遍历数组
for(int i=0; i<arr.length; ++i}{arr[i];}
for(
- 数组元素的默认初始化值
int[] -> 0
float[] -> 0.0
char[] -> '\u000'
String[] -> null
- 数组的内存解析
- 数组在初始化大小后会开辟一个连续的空间,进行存储数据
arr1 = arr2
时,arr1和arr2使用的是同一个空间,是浅拷贝
数组中常见的异常
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
Index 30 out of bounds for length 20
异常的线程 "main" java语言.数组下标(索引)越界异常:
索引30超出了长度20的边界
未定义数组
数组中的类型自动转换
public class test3 {
public static void main(String[] args) {
// 类型自动转换也会发生在数组中
//********test1**************
byte i = 1;
short j = 2;
char z = 'a';
int x = 5;
int[] arr1 = new int[]{i, j, z, x};
for(int item: arr1) System.out.print(item + " ");
System.out.println();
//********test2**************
double d = 0.55;
float f = 0.1f;
double[] arr2 = new double[]{i, j, z, x, d, f};
for(double item: arr2) System.out.print(item + " ");
System.out.println();
//********test3**************
String s = "AAA";
// 异常int无法转换成String类型
// String[] arr3 = new String[]{i, j, z, x, d, f, s};
// for(String item: arr3)
// System.out.print(item + " ");
}
}