目录
前言
一、一维数组
(1)数组介绍
(2)数组的使用
1)动态初始化
2)静态初始化
3)数组的引用
(3)数组的细节
(4)应用案例
二、数组赋值机制
三、数组拷贝
总结
前言
国庆第五天,一维数组基本知识的复习。
一、一维数组
(1)数组介绍
数组可以进行存放多个同一类型的数据。数组是一种引用数据类型,即数组就是一组数据。
(2)数组的使用
1)动态初始化
方法一:数据类型[ ] 数组名 = new 数据类型[大小]
如:int[ ] a = new int[5];
方法二:先声明数组: 数据类型 数组名[ ]
如:int[ ] a;
再创建数组: 数组名 = new 数据类型[大小]
如:a = new int[5];
2)静态初始化
方法:数据类型 数组名[ ] = {元素值1,元素值2……}
如:int a[5] = {1, 2, 3, 4, 5};
3)数组的引用
引用方法:数组名 [下标];
注意:数组的下标是从0开始的,如:a数组第三个数的引用方法为 a[2]
(3)数组的细节
1)数组是多个相同类型数据的组合,实现对这些数据的统一管理
2)数组中的元素可以是任何数据类型,但不能混用
3)数组的下标是从 0 开始
4)数组的下标必须在指定范围内,否则报错
5)数组创建后,如果没有赋值则会有默认值
int 0、shrot 0、byte 0、long 0、float 0.0、double 0.0、String null、boolean false
(4)应用案例
1)创建一个 char 类型的 26 个元素的数组,分别 放置'A'-'Z',使用循环访问所有元素
public class ArrayExercise01 {
public static void main(String[] args) {
char[] c = new char[26];
for(int i = 0; i < c.length; i++) {
c[i] = (char) ('A' + i);// 'A' + i 是 int型,需要强制类型转换
System.out.print(c[i] + " ");
}
}
}
输出结果:
2)请求出一个数组 int[] 的最大值 {4,-1,9,10,23},并得到对应的下标
public class ArrayExercise02 {
public static void main(String[] args) {
int[] a = {4 , -1 , 9 , 10 , 23};
int max = a[0];
int j = 0;
for(int i = 1 ; i < a.length ; i++) {
if(a[i] > max) {
max = a[i];
j = i;
}
}
System.out.println("最大值为:" + max);
System.out.println("最大值的下标为:" + j);
}
}
输出结果:
思路分析:
1. 定义一个 int 数组 int[] a = {4,-1,9, 10,23};
2. 假定 max = a[0] 是最大值 , j=0;
3. 从下标 1 开始遍历 a, 如果 max < 当前元素,说明 max 不是真正的最大值, 我们就 max = 当前元素; j = 当前元素下标;
4. 当我们遍历这个数组 a 后 , max 就是真正的最大值,j 最大值对应的下标
二、数组赋值机制
1)基本数据类型赋值,这个值就是具体的数据,相互不影响。
如:int n1 = 10; int n2 = n1;
2)数组在默认情况下是引用传递,赋的值是地址。
3)基本数据类型赋值演示:
public class ArrayAssign {
public static void main(String[] args) {
//基本数据类型赋值,赋值方式为值拷贝
//n2的变化,不会影响到n1的值
int n1 = 10;
int n2 = n1;
n2 = 80;
System.out.println("n1=" + n1);//10
System.out.println("n2=" + n2);//80
}
}
最后会输出:
4)引用传递演示:
public class ArrayAssign {
public static void main(String[] args) {
//数组在默认情况下是引用传递,赋的值是地址,赋值方式称为 引用传递,传递的是一个地址
int[] arr1 = {1,2,3};
int[] arr2 = arr1; //把arr1赋给arr2
//arr2 的值会影响 arr1 的值,所以称为引用传递
arr2[0] = 10;
for(int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]); // arr1 和 arr2 指向同一个数据空间
}
}
}
最后会输出:
三、数组拷贝
案例演示:
将 int[] arr1 = {10,20,30}; 拷贝到 arr2 数组, 要求数据空间是独立的。
public class ArrayCopy {
public static void main(String[] args) {
int[] arr1 = {10, 20, 30};
// 创建一个新的数组 arr2 , 开辟新的数据空间
// 大小 和arr1 一样大
int[] arr2 = new int[arr1.length];
//遍历 arr1 ,把每个元素拷贝到对应的位置
for(int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
arr2[0] = 100; // 修改 arr2 不会对 arr1 造成影响
System.out.print("arr1数组的值为:");
for(int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
System.out.println( );
System.out.print("arr2数组的值为:");
for(int i = 0; i < arr1.length; i++) {
System.out.print(arr2[i] + " ");
}
}
}
最后输出结果为:
可以看出 arr2 的改变没有影响到 arr1,这就是数组的拷贝,会开创独立的数据空间,不会互相影响。
总结
努力,成功!