目录
1.数组基础
1.1. 引入数组
引言:为什么使用数组?
需求: 请存储全班的成绩
根据变量存: int score1=66; int score2=68; int score3=77; ...
弊端: 60个学生成绩,则需要60个变量,冗余太多
假设每个同学的成绩都+1分? 如何处理?
弊端:每个变量,都需要做+1操作,不方便管理
引入数组:
概念:一组连续的内存空间,用于存储相同类型的元素
数组特点:类型相同,长度固定
===========================案例1============================
public class ArrayTest1 {
public static void main(String[] args) {
//需求: 请存储全班的成绩
//数组是引用类型:往往需要先开辟空间,然后再存值
int[] arr = new int[3]; //定义3个int类型的数组空间
//通过下标给数组元素赋值(存值)与取值 下标范围:0~长度-1
arr[0] = 66; //赋值
arr[1] = 68;
arr[2] = 77;
//arr[3] = 99; //ArrayIndexOutOfBoundsException: 数组越界异常
//打印输出的优化---循环打印(遍历)
System.out.println("数组长度:"+arr.length); //3
for(int i=0;i<arr.length;i++) { //i=0
System.out.println(arr[i]); //arr[0],arr[1]..
}
//System.out.println(arr[3]); //ArrayIndexOutOfBoundsException
}
}
===========================案例2============================
//案例2:给每个学生成绩都+1
public class ArrayTest2 {
public static void main(String[] args) {
int[] arr = new int[3]; //定义3个int类型的数组空间
//通过下标给数组元素赋值(存值)与取值 下标范围:0~长度-1
arr[0] = 66; //赋值
arr[1] = 68;
arr[2] = 77;
for(int i=0;i<arr.length;i++) {
arr[i] += 1; //arr[i]=arr[i]+1;
System.out.println(arr[i]);
}
}
}
1.2 数组的初始值与创建
=======================数组的初始值========================
//数组的初始值问题:
public class Test1 {
public static void main(String[] args) {
int[] a = new int[3]; //创建3个存int值的空间
System.out.println(a[0]); //0 int类型初始为0
double[] b = new double[3];
System.out.println(b[0]); //0.0 double类型初始值
boolean[] c = new boolean[3];
System.out.println(c[0]); //false
char[] d = new char[3];
System.out.println(d[0]); //码值为0对应的字符
String[] e = new String[3];
System.out.println(e[0]); //String类型初始为 null
}
}
=======================数组的创建========================
//数组的创建:
public class Test2 {
public static void main(String[] args) {
//----------动态赋值(有了空间,再一个个赋值)-----------
//1.先声明,后创建空间
int[] a;
a = new int[3];
//2.声明的同时,创建空间-(常用)
int[] c = new int[3];
//------------静态赋值(有了空间的同时赋值)-------------
//3.创建空间的同时进行赋值
int[] d = new int[]{1,3,5}; //数组的长度,由值的个数决定
//4.创建空间的同时进行赋值(简化版-常用)
int[] e = {1,3,5};
}
}
1.3 数组练习
=======================案例1========================
//案例1:给定一个整数数组,统计数组元素的平均分
//分析:先遍历数组的所有元素; 再求和 在除以长度
public class Test1 {
public static void main(String[] args) {
int[] a = {68,75,83,63};
double sum = 0; //求和,初始为0
int len = a.length;
for(int i=0;i<len;i++) {
sum += a[i];
}
System.out.println("数组元素的平均分为:"+(sum/len));
}
}
=======================案例2========================
//案例2:给定一个整数数组,输入一个整数n,如果在数组中存在,则输出下标;否则打印-1
//例如: 7 3 8 2 6
//录入1 -1 录入8 2
public class Test2 {
public static void main(String[] args) {
int[] a = {7,3,8,2,6};
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个值:");
int n = sc.nextInt();
int index = -1; //记录下标
for(int i=0;i<a.length;i++) { //0
if(n==a[i]) {
index = i; //如果匹配上,进来了,得到了下标
break;
}
}
System.out.println("下标:"+index);
}
}
2. 数组扩容
数组扩容:
从前面的数组特点中可知,数组的长度是固定的
如果需要给数组扩容的话,需要