数组
数组
概念
- 一组连续的内存空间
- 存储相同数据类型的数据
数组的创建
语法:类型[] 数组名 = new 类型[长度]
new:通知虚拟机,需要开辟一块内存空间
指定空间类型
指定空间长度
由栈空间进行申明,引用堆当中的内存地址,引用类型。
数组的使用
-
设置数据
数组的最大长度为int-8
游标越界:无论是存值还是取值
通过循环给数组录入数据
遍历:依次对元素进行访问
foreach遍历
区别:
foreach语法更加简练,但是只能是从头开始遍历。
而普通的for循环,可以更加灵活的决定遍历的起止位置。
地址传递
- 引用数据类型的赋值,传递的是内存地址。
- 否则即便数据看起来一样,只要是new了一个新的地址,那么就是两个不同的东西。
- 在同一个地址当中,所有的引用,只要有一个修改,其他引用都会修改。
一句话,记住就行:
java中数据的使用,效率最差的就是创建数组。其次是创建对象。再其次是创建基本数据类型变量。最快的
就是赋值/引用。
作业:
- 录入若干学生成绩,分别求,最大值,最小值,平均值,总和。
package com.qf.array;
import java.util.Scanner;
public class HomeWork01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.print("请输入学生数量:");
int num = scan.nextInt();
double[] scores = new double[num];
double sum = 0;
double max = scores[0];
double min = 100;
double avg = 0;
for(int i = 0;i < scores.length;i++) {
System.out.print("请输入第"+(i+1)+"个学生的成绩:");
scores[i] = scan.nextDouble();
sum +=scores[i];
if(max<scores[i]) {
max = scores[i];
}
if(min>scores[i]) {
min = scores[i];
}
}
avg = sum/num;
System.out.println("最高分:"+max+"\r\n最低分:"+min+"\r\n平均分:"+avg+"\r\n总分:"+sum);
}
}
选做:
改造割韭菜系统,将数据(号池,奖票)都存入数组。