Java——数组
一、数组是?
数组就是一个容器,用于存储一批同种类型的数据。
数组变量名中存储的是数组在内存中的地址,数组是一种引用数据类型。
二、静态初始化数组
(一)定义
即定义数组的时候直接给数组赋值。
(二)格式
1.完整格式
数据类型[ ] 数组名 = new 数据类型[ ]{元素1,元素2,元素3,...};
2.简化格式
数据类型[ ] 数组名 = {元素1,元素2,元素3,...};
3.注意
(三)数组的访问
1. 格式:数组名 [ 索引 ]
public class HelloWorld {
public static void main(String[] args) {
// 初始化数组
int [] ages = new int[]{1,2,3,4};
double [] point = {1.1,2.2,3.3};
// 访问数组的某个值
System.out.println(ages[0]);
System.out.println(point[2]);
}
}
//结果
//1
//3.3
2.重新赋值数组的某个索引代表值
格式:数组名 [ 索引 ] = 想赋予的值;
public class HelloWorld {
public static void main(String[] args) {
int [] ages = new int[]{1,2,3,4};
double [] point = {1.1,2.2,3.3};
System.out.println(point[2]);
// 将数组的某个索引的值重新赋值
point[2]=10.9;
System.out.println(point[2]);
}
}
//结果
//3.3
//10.9
3.查看数组的长度
格式:数组名.length
public class HelloWorld {
public static void main(String[] args) {
int [] ages = new int[]{1,2,3,4};
// 查看数组的长度
System.out.println(ages.length);
}
}
//结果
//4
(四)数组的遍历
1. 利用for循环
public class HelloWorld {
public static void main(String[] args) {
// 初始化数组
int [] ages = new int[]{11,12,13,14,15};
for (int i = 0; i < ages.length; i++) {
System.out.println(ages[i]);
}
}
}
//结果
//11
//12
//13
//14
//15
三、动态初始化数组
(一)定义
即在定义数组时先不存入具体的元素值,只确定数组存储的数据类型和数组的长度。
(二)格式
数据类型 [ ] 数组名 = new 数据类型 [ 长度 ];
赋值:数组名 [ 索引 ] = 值;
public class HelloWorld {
public static void main(String[] args) {
int[] ages = new int[3];
for (int i = 0; i < ages.length; i++) {
System.out.println(ages[i]);
}
ages[0]=30;
ages[1]=40;
ages[2]=50;
for (int i = 0; i < ages.length; i++) {
System.out.println(ages[i]);
}
}
}
//结果
//0
//0
//0
//30
//40
//50
(三) 动态初始化数组元素默认值规则
public class HelloWorld {
public static void main(String[] args) {
// 注意char类型的初始值
char [] a = new char[3];
// 直接输出char的初始值时,输出结果不为0
// 是因为char初始值为0,然后直接输出时会将0转为单字符,
// 但是0没有对应的单字符,所以输出一个符号。
System.out.println(a[0]);
// 想输出char的初始值0时,可以将其转为整型。
System.out.println((int)a[0]);
}
}
//结果
//
//0
(四)注意
1.在还没赋值给数组的每个索引时,数组都有一个初始值为0.
2.
四、多个变量指向同一个数组
(一)定义
当将一个数组直接赋值给另一个数组时,它们的数据地址是一样的。
(二)展示
public class HelloWorld {
public static void main(String[] args) {
// 定义一个数组
int[] arr1 = {100,90,80,70};
// 将arr1数组赋值给arr2
int[] arr2 =arr1;
// 输出两数组的地址,会发现地址是一样的。
System.out.println(arr1);
System.out.println(arr2);
// 改变arr2的某个值
arr2[1]=200;
// 查看arr1的索引为1的值,会发现改变arr2的值,arr1的值也会改变
System.out.println(arr1[1]);
}
}
//结果
//[I@76fb509a
//[I@76fb509a
//200
(三)注意
如果某个数组变量存储的地址是null,那么该变量将不再指向任何数组对象。
public class HelloWorld {
public static void main(String[] args) {
int[] arr1 = {100,90,80,70};
int[] arr2 =arr1;
// 把null赋值给arr2,代表arr2数组的地址为null
arr2 = null;
// 直接输出arr2,可以得到arr2的地址为null
System.out.println(arr2);
// 查看arr2的某个值和查看arr2的长度,都会报错
// System.out.println(arr2[0]);
// System.out.println(arr2.length);
}
}
//结果
//null
//NullPointerException(报错)
//NullPointerException(报错)