1. 数组介绍
- 数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。
2. 数组的使用
方法一:动态初始化
方式二:动态初始化
- 先声明数组
语法:数据类型 数组名[]; 也可以 数据类型[] 数组名; int a[]; 或者 int[] a; - 创建数组
语法: 数组名=new 数据类型[大小]; a=new int[10];
//演示 数据类型 数组名[]=new 数据类型[大小]
//循环输入5个成绩,保存到double数组,并输出
//步骤
//1. 创建一个 double 数组,大小 5
// (1) 第一种动态分配方式
//double scores[] = new double[5];
//(2) 第2种动态分配方式, 先声明数组,再 new 分配空间
double scores[] ; //声明数组, 这时 scores 是 null
scores = new double[5]; // 分配内存空间,可以存放数据
//2. 循环输入
// scores.length 表示数组的大小/长度
Scanner myScanner = new Scanner(System.in);
for( int i = 0; i < scores.length; i++) {
System.out.println("请输入第"+ (i+1) +"个元素的值");
scores[i] = myScanner.nextDouble();
}
//输出,遍历数组
System.out.println("==数组的元素/值的情况如下:===");
for( int i = 0; i < scores.length; i++) {
System.out.println("第"+ (i+1) +"个元素的值=" + scores[i]);
}
方式三:静态初始化
3. 数组使用注意事项和细节
1)数组是多个相同类型数据的组合,实现对这些数据的统一管理
2)数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
3)数组创建后,如果没有赋值,有默认值
int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,boolean false,String null
4)使用数组的步骤 1. 声明数组并开辟空间 2 给数组各个元素赋值 3 使用数组
5)数组的下标是从 0 开始的。
数组下标必须在指定范围内使用,否则报:下标越界异常,比如
int [] arr=new int[5]; 则有效下标为 0-4
数组属引用类型,数组型数据是对象(object)
//1. 数组是多个相同类型数据的组合,实现对这些数据的统一管理
//int[] arr1 = {1, 2, 3, 60,"hello"};//String ->int
double[] arr2 = {
1.1, 2.2, 3.3, 60.6, 100};//int ->double
//2. 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用
String[] arr3 = {
"北京","jack","milan"};
//3. 数组创建后,如果没有赋值,有默认值
//int 0,short 0, byte 0, long 0,
//float 0.0,double 0.0,char \u0000,
//boolean false,String null
short[] arr4 = new short[3];
System.out.println("=====数组arr4=====");
for(int i = 0; i < arr4.length; i++) {
System.out.println(arr4[i]);
}
//6. 数组下标必须在指定范围内使用,否则报:下标越界异常,比如
//int [] arr=new int[5]; 则有效下标为 0-4
//即数组的下标/索引 最小 0 最大 数组长度-1(4)
int [] arr = new int[5];
//System.out.println(arr[5]);//数组越界
4. 数组赋值机制
1)基本数据类型赋值,这个值就是具体的数据,而且相互不影响。
int n1 = 2; int n2 = n1
2)数组在默认情况下是引用传递,赋的值是地址。
看一个案例,并分析数组赋值的内存图(重点, 难点. )。
int[] arr1 = {1,2,3};
int[] arr2 = arr1;
5. 数组拷贝
将 int[] arr1 = {10,20,30}; 拷贝到 arr2 数组, 要求数据空间是独立的.
//将 int[] arr1 = {10,20,30}; 拷贝到 arr2数组,
//要求数据空间是独立的.
int[] arr1 = {
10, 20, 30};
//创建一个新的数组arr2,开辟新的数据空间
//大小 arr1.length;
int[] arr2 = new int[arr1.length];
//遍历 arr1 ,把每个元素拷贝到arr2对应的元素位置
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
//修改 arr2, 不会对arr1有影响.
arr2[0] = 100;
//输出arr1
System.out.println("====arr1的元素====");
for (int i = 0; i < arr1.length; i++) {
System.out