Java数组学习
1、初始化数组
1.1 静态初始化数组
静态初始化数组:在定义数组的时候直接给数组赋值
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
简化格式:数据类型[] 数组名 = {元素1,元素2,元素3…};
注意事项:什么类型的数组只能存放什么类型的数据。
//格式 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3.......}
int[] a = new int[]{1, 2, 3, 4, 5};
double[] b = new double[]{11.1, 12.2, 13.3};
打印数组在内存中的位置各部分的含义:
[:代表是一个数组
I或者D:代表的是数组的数据类型,I是int类型的数组,D则是double类型的数组
4eec7777:代表在内存中的位置
如何获取到数组的长度:数组名.length
数组遍历快捷键:数组名.length.fori
数组的遍历访问:
//数组的遍历访问 for (int i = 0; i < a.length; i++) { System.out.println(a[i]); }
总结案例;
int sum = 0; int[] sales_volume = new int[]{16, 26, 36, 6, 100}; for (int i = 0; i < sales_volume.length; i++) { sum = sum + sales_volume[i]; } System.out.println("总销售额为:" + sum);
1.2 动态初始化数组
动态初始化数组:定义数组时先不存入具体的元素值,只确定数组存储的数据长度
格式:数据类型[] 数组名 = new 数据类型[长度]
注意事项:动态初始化数组和静态初始化数组不能够混用
int[] a = new int[5];
int[] a = new int[5]{1, 2, 3, 4, 5}; X这种写法错误
动态初始化数组元素默认值规则:
总结案例:
double sum = 0;
double avg = 0;
double[] scores = new double[6];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < scores.length; i++) {
System.out.print("请输入第" + (i+1) + "个评委的评分:");
double score = sc.nextDouble();
scores[i] = score;
}
for (int i = 0; i < scores.length; i++) {
sum = sum + scores[i];
}
avg = sum/ scores.length;
System.out.println("选手的平均分:" + avg);
2、数组在计算机中的执行原理
在函数执行前,会将内存分为三个部分,分别叫方法区,栈内存和堆内存。方法区主要是存放程序编译和class文件的,也就是所谓的main方法;栈内存主要是给main方法开辟空间,main方法里面所定义的变量,数组等等都在所开辟的空间中进行操作;堆内存主要是用来存放new出来的对象数据例如new 数组数据等等,在栈内存中定义的数组arr存放的是数组元素在堆内存中的地址[I@4c873330,通过栈内存中的地址信息来找到数组中的数据元素。
3、数组专项案例
3.1 数组求最值
// 静态初始化数组
int[] Face_Score = new int[]{15, 9000, 10000, 20000, 9500, -5};
// 建议把数组中的第一个数字先设置为最大值
int max = Face_Score[0];
int min = Face_Score[0];
for (int i = 1; i < Face_Score.length; i++) {
if (max < Face_Score[i]) {
max = Face_Score[i];
}
if (min > Face_Score[i]) {
min = Face_Score[i];
}
}
System.out.println("颜值最高为:"+max);
System.out.println("颜值最低为:"+min);
3.2 数组反转
// 数组反转
int[] arr = new int[]{10, 20, 30, 40, 50};
System.out.println("反转前的数组为:");
for (int i = 0; i< arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
int temp = 0;
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
System.out.println("反转后的数组为:");
for (int i = 0; i< arr.length; i++) {
System.out.print(arr[i] + "\t");
}
3.3 随机排名
int[] job_nums = new int[5];
Scanner sc = new Scanner(System.in);
Random ran = new Random();
for (int i = 0; i < job_nums.length; i++) {
System.out.println("请输入第" + (i+1) + "名员工的工号:");
int job_num = sc.nextInt();
job_nums[i] = job_num;
}
for (int i = 0; i < 5; i++) {
int serial = ran.nextInt(5) + 1;
int temp = job_nums[serial];
job_nums[serial] = job_nums[i];
job_nums[i] = temp;
}
for (int i = 0; i < job_nums.length; i++) {
System.out.print(job_nums[i] + "\t");
}