一:数组的基本用法
(1)什么是数组
数组本质上就是让我们能“批量”创建相同类型的变量。
例如:
如果需要表示两个数据, 那么直接创建两个变量即可 int a; int b
如果需要表示五个数据, 那么可以创建五个变量 int a1; int a2; int a3; int a4; int a5;
但是如果需要表示一万个数据, 那么就不能创建一万个变量了. 这时候就需要使用数组, 帮我们批量
创建.
注意:在Java中,数组中包含的变量必须是相同类型。
(2)基本语法
//动态初始化
数据类型[] 数组名称 = new 数据类型[]{初始化数据};
//在数据元素未知时
数据类型[] 数组名称 = new 数据类型 [(元素个数)]
//静态初始化
数据类型[] 数组名称 = {初始化数据};
(3) 代码示例
int[] arr = new int[]{1, 2, 3};
int[] array = new int[4];
String[] array = {"hello","world"};
注意:静态初始化的时候, 数组元素个数和初始化数据的格式是一致的。
二:数组的使用
(1)代码示例:获取长度&访问元素
package Number;
public class Test01 {
public static void main(String[] args) {
int[] arr = {1, 2, 3,4,5};
//获取数组长度:5
System.out.println("length:" + arr.length);
//访问数组中的元素
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
arr[2] = 50;
System.out.println(arr[2]);
}
}
/*输出结果:
length:5
2
3
4
50
*/
注意: 1. 使用 arr.length 能够获取到数组的长度. . 这个操作为成员访问操作符. 后面在面向对象中 会经 常用到.
2. 使用 [ ] 按下标取数组元素. 需要注意, 下标从 0 开始计数
3. 使用 [ ] 操作既能读取数据, 也能修改数据.
(2)代码示例:下标越界
int[] arr = {1, 2, 3,4,5};
//获取数组长度:5
System.out.println("length:" + arr.length);
//访问数组中的元素
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[5]);
/*输出结果:
length:5
2
3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5 at Number.Test01.main(Test01.java:12)
*/
注意:下标访问操作不能超出有效范围 [0, length - 1] , 如果超出有效范围, 会出现下标越界异常
(3)代码示例:
使用下标遍历数组
int[] arr = {1, 2, 3};
//i-[0,arr.length]合法下标
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//执行结果
1
2
3
/*
优势:1、范围遍历(例如定义一个长度为10的数组,遍历下标从5~8的元素并输出)
2、反向遍历
3、自带一个序号(例如 下标为0:元素值)
*/
注意:所谓 "遍历" 是指将数组中的所有元素都访问一遍, 不重不漏. 通常需要搭配循环语句.
使用for-each遍历数组
/*
for-each语法
for (元素类型 b : 数组名称){
b 就是按序得到的元素
}
*/
int[] arr = {1, 2, 3};
for (int b : arr) {
System.out.println(b);
}
// 执行结果
1
2
3
注意: or-each 是 for 循环的另外一种使用方式. 能够更方便的完成对数组的遍历. 可以避免循环条 件和更新语句写错.
三:练习
已知(数组: int a[] = {2,4,3,8,7,5,6,1})
1、找到数组中的最大值
package Number;
//1、找到数组中的最大值
public class Test02 {
public static void main(String[] args) {
int[] arr = {2,4,3,8,7,5,6,1};
int aMax = arr[0];
for(int i = 0;i<arr.length;i++){
if(aMax < arr[i]){
aMax = arr[i];
}
}
System.out.println(aMax);
}
//输出结果:8
2、找到数组中的最小值
package Number;
//2、找到数组中的最小值
public class Test03 {
public static void main(String[] args) {
int[] arr = {2,4,3,8,7,5,6,1};
int aMin =arr[0];
for(int i = 0;i < arr.length;i++){
if(aMin > arr[i]){
aMin = arr[i];
}
}
System.out.println(aMin);
}
}
//输出结果:1
3、计算数组中元素之和
package Number;
//3、计算数组中元素之和
public class Test04 {
public static void main(String[] args) {
int[] arr = {2,4,3,8,7,5,6,1};
int sum = 0;
for(int i = 0;i < arr.length;i++ ) {
sum += arr[i];
}
System.out.println("sum = "+sum);
}
}
//输出结果:36
4、将数组按从小到大排序(进阶)
package Number;
import java.util.Arrays;
//5、将数组按从小到大排序(进阶)
public class Test06 {
public static void main(String[] args) {
int[] arr = {2,4,3,8,7,5,6,1};
Arrays.sort(arr);//排序
for(int i = 0;i < arr.length;i++ ) {
System.out.println(arr[i]+"、");
}
}
}