1. 什么是数组
数组是多个相同类型数据的组合,实现对这些数据的统一管理
2.数组的定义
a. 数组的声明
1). 数据类型[] 数组名 = new 数据类型[length];
eg : String[] str = new String[9];
2). 数据类型 数组名[] = new 数据类型[length];
eg : String str[] = new String[9];
注: 根据企业代码规范建议使用第一种数组声明方式,即 String[] str;
b. 数组的初始化
int[] num = {1,2,3,4,5,6};
程序在执行时,会先对数组中的元素进行默认初始化,即对数组中的元素进行赋值
Java中的数据类型 | 默认初始值 |
整数数值型 | 0 |
浮点型 | 0.0 |
boolean | false |
char | \u0000 |
引用类型 | null |
可以通过元素所在位置的下标来访问每个元素(下标从0开始,最大到元素的个数-1)
d. 数组的遍历
int[] num = {12,23,34,45,56,67,678};
//正序输出
for(int i = 0;i < num.length;i++){
System.out.print(num[i] + " ");
}
//逆序输出
for(int j = num.length-1;j >= 0; j--){
System.out.println(num[j] + " ");
}
练习: 定义一个长度为10的数组,元素随机生成,找出元素中最大值
public static void main(String[] args) {
//1.声明一个长度为10的数组
int[] num = new int[10];
//2.对数组中每个元素进行赋值
Random random = new Random();
for(int i = 0; i < num.length; i++) {
num[i] = random.nextInt(100);
}
//3.将数组中的内容输出
for(int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
//4.找元素中的最大值
int max = num[0];
for(int i = 1; i < num.length; i++) {
max = max > num[i]?max:num[i];
}
System.out.println("max = "+max);
}
3. 数组的复制
/**
* @param src 源数组
* @param srcPos 从源数组的此下标开始复制
* @param dest 目标数组
* @param destPos 目标数组的下标,将内容从此位置开始复制
* @param length 从源数组指定下标开始复制长度为n个元素
*/
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
练习:int[] num1 = {12,23,34,45,32};
int[] num2 = new int[7];
要求:将num1中下标为1,2的元素复制到num2的0,1位置
public static void main(String[] args) {
int[] num1 = {12,23,34,45,32};
int[] num2 = new int[7];
System.arraycopy(num1, 1, num2, 0, 2);
for(int i = 0;i < num2.length; i++) {
System.out.print(num2[i]+" ");
}
} //23 34 0 0 0 0 0
4.数组的扩容
特点:扩容后的新数组是原始数组的副本
/**
* @Param Original 源数组
* @Param newLength 新数组的长度
*/
Arrays.copyOf(类型[] Original,int newLength);
注:Java中数组一旦创建,长度就不可变了
练习:
public static void main(String[] args) {
int[] num = {12,23,34};
num = Arrays.copyOf(num,5);
for (int i = 0;i < num.length;i++){
System.out.println(num[i] + " ");
}
}
5.数组的排序
排序:将数组元素按照从小到大或从大到小的顺序重新排列;
对于元素较多的数组,排序算法的优劣至关重要,排序算法的优劣取决于排序过程中数组的交换次数。
常用的排序的算法有:冒泡排序、选择排序
冒泡排序:相邻元素两两比较,大的往后排
练习:定义一个长度为10的数组,元素随机产生,用冒泡排序将数组中的最大值选出,并对数组进行排列
public static void main(String[] args) {
//1.定义一个长度为10的数组
int[] num = new int[10];
//2.随机生成10个元素放入数组中
Random random = new Random();
for (int i = 0;i < num.length;i++){
num[i] = random.nextInt(100);
}
System.out.println(Arrays.toString(num));
//3.冒泡排序
for (int i = 0; i < num.length-1;i++){//i表示冒泡的次数
for (int j = 0; j < num.length-1;j++){//j表示元素的下标
if(num[j] > num[j+1]){
int tmp = 0;
tmp = num[j];
num[j] = num[j + 1];
num[j + 1] = tmp;
}
}
}
System.out.println(Arrays.toString(num));
}