数组
定义
两种方法都可以,但是第二种不推荐使用
int[] arr;
int arr[]; //不推荐使用
数组初始化
初始化是为了数组开辟内存空间,并为数组中的每个元素赋予初始值
动态初始化:只给出长度,由系统给初始化值
静态初始化:给出初始化值,由系统决定长度
数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[3]
获取数组中的数据
用arr得到的是地址,用arr[]可以得到所在位置的数据
获取数组中元素个数:数组名.length
Java内存分配
- 栈:存储局部变量,局部变量就是定义在方法中的变量,使用完毕,立即回收
- 堆:存储的是new出来的东西,实体,对象,每一个对象都有一个地址值,并且每一个对象的数据都有默认值,数据使用完毕后,会在垃圾回收器空闲的时候被回收
- 方法区
- 本地方法区:和系统相关
- 寄存器:给CPU使用
图例:int[] arr = new int[3]
数组的静态初始化
数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3}
举例:int[] arr = new int[]{1, 2, 3};
简化格式:int[] arr = {1, 2, 3};
数组获得最大值
class hello {
public static void main(String[] args) {
int[] arr = {1,2,3,4};
int max = arr[0];
for(int i = 0; i < arr.length; i++){
if(arr[i] > max){
max = arr[i];
}
}
System.out.println(max);
}
}
数组练习之评委打分
import java.util.Random;
import java.util.Scanner;
class hello {
public static void main(String[] args) {
int[] arr = new int[6];
Scanner sc = new Scanner(System.in);
for(int i = 0; i < arr.length; i++){
System.out.println("please input the score" + ' ' + i);
int score = sc.nextInt();
arr[i] = score;
}
int max = arr[0];
for(int i = 0; i < arr.length; i++){
if(arr[i] > max){
max = arr[i];
}
}
int min = arr[0];
for(int i = 0; i < arr.length; i++){
if(arr[i] < min){
min = arr[i];
}
}
int sum = 0;
for(int i = 0; i < arr.length; i++){
sum += arr[i];
}
int avg = (sum - max -min)/(arr.length - 2);
System.out.println(avg);
}
}
不死神兔问题
有一对兔子,从出生后第三个月每个月都生一对兔子,小兔子长到3个月后每个月又生一对兔子
类似斐波那契数列,每个月兔子对数是前两月兔子对数之和
class hello {
public static void main(String[] args) {
int[] arr = new int[20];
arr[0] = 1;
arr[1] = 1;
for(int i = 2; i < arr.length; i++){
arr[i] = arr[i-1] + arr[i-2];
}
for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
}
}