day 08
数组
表示一块连续的内存空间
可以储存多个元素
要求元素的数据类型一致
数组定义的方式
数据类型[] 数组名
int[] arr;
double[] arr;
数据类型 数组名[]
int arr[]
double arr[]
注意空格
数组长度
arr.length 是一个属性 不是方法
必须在创建数组对象时就明确指定
一旦确定,无法改变
>=0 不能为负数
数组在没有初始化的时候不能使用
数组的下标从0开始 下标的最大值是length-1;
组表的下标越界
java.lang.ArrayIndexOutOfBoundsException
空指针异常
java.lang.NullPointerException
数组的默认值
动态初始化后的数组会有默认值 0 0.0 null
int 0
double float 0.0
char \u0000
boolean false
String null
默认值的类型
数组初始化
动态初始化
初始化一个长度为3的数组 这里的new是在为数组开辟内存空间,所以长度必须要有
可以大于等于0 但是一般大于零 不能为负数
int[] arr1 =new int[3];
静态初始化
int[] arr2 = new int[]{1,2,3,4,5};
int[] arr2
arr2 = new int[]{1,2,3,4,5};
简化版的静态初始化
int[] arr3 = {1,2,3,4,5};
错误:不能指定数组长度
arr2 = new int[4]{1,2,3,4,5};
错误:不能分两行书写
int[] arr2
arr2 = {1,2,3,4,5};
内存空间
使用
工具类
注意导包
java.util.Arrays 包含了操作数组的很多方法
Arrays.copyOf(array,10);
Arrays.toString(array);
Arrays.sort(arr1);
Arrays.fill(arr1,10)
数组拷贝
数组的长度不能更改,但如果有更多的元素存入数组,可以创建一个新的更大的数组,把旧的数组元素放进去,然后再放新数组
java.lang.System中,有个方法 arraycopy可以实现复制数组中元素的功能。
[0,1,2,3]
[0,0,0,0,0,0,0,0,0,0]
[0,1,2,0,0,0,0,0,0,0]
arraycopy(
数组,
int,从哪里开始复制
数组
int 复制到哪里
int 长度
)
练习
求数组元素的平均值
要求
实现一个方法
参数是int[]
该方法可以计算出数组中所有数据的平均值
并返回
自己随机创建一个数组,并验证结果
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 手动输入一个数组
int[] Array = {23, 4, 67, 99, 120, 314, 576, 78, 90, 15};
System.out.println("输入的数组: " + Arrays.toString(Array));
// 计算平均值
double average = Average(Array);
System.out.println("平均值: " + average);
}
// 计算平均值
public static double Average(int[] array) {
if (array == null || array.length == 0) {
return 0.0;
// 如果数组为空或长度为0,返回0.0
}
double sum = 0;
//遍历数组
for (int i = 0; i < array.length; i++) {
int num = array[i];
System.out.print("sum="+sum+"+"+num);
sum += num;
System.out.println("="+sum);
}
return (double) sum / array.length;
}
}
要求
实现一个方法
参数是int[]
该方法可以计算出数组中所有数据的最大值
并返回
自己随机创建一个数组,并验证结果
import java.util.Arrays;
public class Main01 {
public static void main(String[] args) {
int[] Array={1,22,3,45,66,8,4,10};
System.out.println("输入的数组: " + Arrays.toString(Array));
int m = Max(Array);
System.out.println("输入数组的最大值: " + m);
}
//实现一个方法 求数组中元素的最大值
public static int Max(int[] array) {
//声明一个变量 Max 用于接收数组中的最大值
//方法一
//遍历数组
// int max=array[0];
// for (int i = 1; i < array.length; i++) {
// if(array[i]>max){
// max=array[i];
//方法二
Arrays.sort(array);
int max=array[array.length-1];
// }
// }
return max;
}
}
定义一个方法 传递一个数组给它 将这个数组长度扩大到原来的2倍,并返回
import java.util.Arrays;
public class Main02 {
public static void main(String[] args) {
int[] oldArray={1,22,3,45,66,8,4,100,200};
System.out.println("输入的数组oldArray: " + Arrays.toString(oldArray));
int[] newArray = expandArray(oldArray);
System.out.println("扩展后的数组newArray: " + Arrays.toString(newArray));
}
public static int[] expandArray(int[] oldarray) {
// 创建一个新的数组,长度是原数组的两倍
int[] newArray = new int[oldarray.length * 2];
// 将原数组中的元素复制到新数组中
System.arraycopy(oldarray, 0, newArray, 0, oldarray.length);
return newArray;
}
}