数组
数组定义
数据类型[] 数组名;
int[] arr;
数组初始化
为数组每个元素开辟一块空间,并赋予初始值
静态初始化:给出初始值,由系统给定长度
int[] arr = {1, 2, 3};
动态初始化:给出长度,由系统给定初始值
数据类型[] 数组名 = new 数据类型[数组长度]
int[] arr = new int[3]
输出数组名地址 System.out.println(“arr:”+arr);
输出数组值 System.out.println(“arr[0]:”+arr[0]);
java内存分配
java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片内存空间都有特定的处理数据方式,和内存管理方式。
-栈 存储局部变量(定义在方法中的)
-堆 存储new出来的东西,对象,数组
-方法区
-本地方法区(系统相关)
-寄存器(给CPU使用)
堆内存使用完会在垃圾回收器,空闲回收
栈中局部变量使用完立即回收
如果两个数组拿的都是一个堆内存的地址,任何一个数组对堆内存修改,另一个访问也是修改过的。
数组练习
选手打分
/* 需求:有六个评委为参赛选手打分,分数为1-100分,选手最后得分为,去掉一个最高分,一个最低分,最后四个分数的平均分。*/
public class ArrayTest{
public static void main(String[], args){
int[] arr = new int[6];
scanner sc = new Scanner(System.in);
for(int x=0; x<arr.length; x++){
System.out.println("请输入第"+(x+1)"评委给出的分数:") ;
int score = sc.nextInt();
arr[x] = score;
}
int max = arr[0];
for(int x=1; x<arr.length; x++){
if(arr[x]>max){
max = arr[x];
}
}
for(int x=1; x<arr.length; x++){
if(arr[x]<min){
min = arr[x];
}
}
int sum = 0;
for(int x=0; x<arr.length; x++){
sum += arr[x];
}
int avg = (sum - max -min)/(arr.length - 2);
System.out.println("该选手的最终成绩为"+avg)
}
兔子问题
/*要求:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月又生一对兔子,问第二十个月兔子是多少?*/
public class ArrayTest2{
public static void main(String[] args){
int[] arr = new int[20];
arr[0] = 1;
arr[1] = 1;
for(int x=2; x<array.length; x++){
arr[x] = arr[x-1] + arr[x-2];
}
System.out.println("第二十个月的兔子对数是:"+arr[19]);
}
}