- 数组是固定个数的相同类型的元素集合,有顺序,可重复。
- 数组的构成有四大要素:数组的数据类型,数组的长度,数组的数组名,数组的下标。
- ①数组是有序排列的
- ②数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
- ③创建数组对象会在内存中开辟一整块连续的空间
- ④数组的长度一旦确定,就不能修改。
- 1.1数组的声明和创建:
数据类型[ ] 数组名;
数据类型 数组名[ ];
1.2创建数组的方法:
1.2.1用new关键字:
数组名 = new 数据类型[数组长度];
arrayName = new type[size];
其中,数组长度就是数组中能存放的元素个数,显然应该为大于 0 的整数 。
当然也可以在声明数组时就给它分配空间:
数据类型[] 数组名 = new 数据类型[数组长度];
type[] arrayName = new type[size];
1.3一维数组的静态初始化:
- 定义数组(为数组的数组元素分配内存空间)的时候直接给数组赋初始值。
- Java 语言中数组必须先初始化,然后才可以使用。
静态初始化数组的格式:
1.4数组的基本原理:
注意:数组变量名中存储的是数组在内存中的地址,数组是引用数据类型。
1.5数组的引用:
通过下标来引用/调用数组,或者说数组中元素的访问方式为:
数组名称[索引]
arrayName[index];
数组的长度属性:length
// 获取数组的长度(就是数组元素的个数)
System.out.println(arr.length); // 3
注意:length是属性,不是方法。
图解:
1.6数组的引用:// 取值
System.out.println(arr[0]); // 12
// 赋值
arr[2] = 100;
System.out.println(arr[2]); // 100
问题:数组的最大索引可以怎么表示?
答:数组名. length – 1 // 前提:元素个数大于0
1.7一维数组的动态初始化:
定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据。
动态初始化的格式:
1.8数组的几个注意事项:
1.9数组遍历: 遍历:就是一个一个数据的访问。也叫轮询。
//数组长度为5,索引范围【0-4】
int[] a = {20, 30, 40, 50};
for (int i = 0; i < a.length; i++) {
//数组下标刚好与循环变量i对应. 所以可以写a[i]
System.out.println(a[i]);
}
普通循环:for、while、do while皆可。
1.10 for each遍历数组:
java5之后,Java提供了一种更简洁的循环:foreach循环,这种循环遍历数组和集合更加简洁。
使用foreach循环遍历数组时,无须获得数组和集合长度,无须根据索(下标)引来访问数组元素,foreach循环自动遍历数组和集合的每一个元素。
1.10.1 for each格式:
使用foreach循环遍历数组时,无须获得数组和集合长度,无须根据索(下标)引来访问数组元素,foreach循环自动遍历数组和集合的每一个元素。
1.10.1 for each格式:
for (数据类型 变量名 : 遍历对象数组名){
循环语句;
}
例子:
int arrays[3];
for(int array : arrays){
System.out.println(array)
}
1.10.2一维数组的两种数组定义时的特点和场景有什么区别?
- 当前已经知道存入的元素值,用静态初始化。
- 当前还不清楚要存入哪些数据,用动态初始化。
1.8一维数组案例:
//案例一:数组遍历-求和
//需求:某部门5名员工的销售额分别是:16、26、36、6、100,请计算出他们部门的总销售额。
int[] arr={16,26,36,6,100};
int l = 0;
for(int count:arr ) {
count=arr[0]+arr[1]+arr[2]+arr[3]+arr[4];
l=count;
}
System.out.println(l);
//案例二:数组元素求最大值
int[] arr = {15, 9000, 10000, 20000, 9500, -5};
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
System.out.println("该数组里面的最大值是" + max);
// 案例三:猜数字游戏
// 需求:
// 开发一个幸运小游戏,游戏规则如下:
// 游戏后台随机生成1-20之间的5个数(无所谓是否重复),然后让大家来猜数字:
// 未猜中提示:“未命中”,并继续猜测
// 猜中提示:“运气不错,猜中了”,并输出该数据第一次出现的索引位置,最后把数组中的5个数据都输出看以下, 然后结束本游戏。
int[] data = new int[5];
//2.动态的生成5个1-20之间的随机数并存入到数组中去
Random r = new Random();
for (int i = 0; i < data.length; i++) {
//i = 0 1 2 3 4 5
data[i] = r.nextInt(bound:20)+1;
}
//3.定义一个死循环让用户进行猜测
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入一个1-20之间的整数进行猜测: ");
int guessData = sc.nextInt();
//4.遍历数组中的每个数据,看是否有数据与猜测的数据相同,相同代表猜中了并给出提示
OUT:
for (int i = 0; i < data.length; i++) {
if (data[i] == guessData) {
System.out.println("运气不错,猜中了!您猜中的数据索引是: " + i);
break OUT;//结束了整个死循环,代表游戏结束了!
}
}
System.out.println("当前猜测的数据在数组中不存在,请重新猜测!");
return;
}
//5.输出数组的全部元素,让用户看到自己确实猜中了
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + "t");
}
//案例4: 随机排名
//22 33 35 13 88 ----->随机排名
int[] jobNumber=new int[5];//动态初始化一个数组,存储5个工号
Scanner sc=new Scanner(System.in);
Random r=new Random();
//定义一个循环,循环5次,依次录入一个工号存入对应的位置
for (int i = 0; i
//案例一:数组遍历-求和
//需求:某部门5名员工的销售额分别是:16、26、36、6、100,请计算出他们部门的总销售额。
int[] arr={16,26,36,6,100};
int l = 0;
for(int count:arr ) {
count=arr[0]+arr[1]+arr[2]+arr[3]+arr[4];
l=count;
}
System.out.println(l);
//案例二:数组元素求最大值
int[] arr = {15, 9000, 10000, 20000, 9500, -5};
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
System.out.println("该数组里面的最大值是" + max);
// 案例三:猜数字游戏
// 需求:
// 开发一个幸运小游戏,游戏规则如下:
// 游戏后台随机生成1-20之间的5个数(无所谓是否重复),然后让大家来猜数字:
// 未猜中提示:“未命中”,并继续猜测
// 猜中提示:“运气不错,猜中了”,并输出该数据第一次出现的索引位置,最后把数组中的5个数据都输出看以下, 然后结束本游戏。
int[] data = new int[5];
//2.动态的生成5个1-20之间的随机数并存入到数组中去
Random r = new Random();
for (int i = 0; i < data.length; i++) {
//i = 0 1 2 3 4 5
data[i] = r.nextInt(bound:20)+1;
}
//3.定义一个死循环让用户进行猜测
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入一个1-20之间的整数进行猜测: ");
int guessData = sc.nextInt();
//4.遍历数组中的每个数据,看是否有数据与猜测的数据相同,相同代表猜中了并给出提示
OUT:
for (int i = 0; i < data.length; i++) {
if (data[i] == guessData) {
System.out.println("运气不错,猜中了!您猜中的数据索引是: " + i);
break OUT;//结束了整个死循环,代表游戏结束了!
}
}
System.out.println("当前猜测的数据在数组中不存在,请重新猜测!");
return;
}
//5.输出数组的全部元素,让用户看到自己确实猜中了
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + "t");
}
//案例4: 随机排名
//22 33 35 13 88 ----->随机排名
int[] jobNumber=new int[5];//动态初始化一个数组,存储5个工号
Scanner sc=new Scanner(System.in);
Random r=new Random();
//定义一个循环,循环5次,依次录入一个工号存入对应的位置
for (int i = 0; i



