Java 语言中提供的数组是用来存储固定大小的同类型元素。
你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,….,number99。
声明数组变量
格式1:数据类型[] 数组名 = {值1,值2,值3,值4}
//数据类型[] 数组名 = {值1,值2,值3,值4}
//int[] age = {1,2,3,4};
public class ArrayDemo2 {
public static void main(String[] args) {
//格式2 数组第二种定义方式
//数组类型[] 数组名 = {值1,值2,值3,值4}
int[] age = {1,2,3,4};
System.out.println(age[0]); //打印age第一个值1
System.out.println(age[1]);//打印age第一个值2
System.out.println(age[2]);//打印age第一个值3
System.out.println(age[3]);//打印age第一个值4
age[3] = 100; //对age的第四个值重新赋值
System.out.println(age[3]);//打印结果是100
System.out.println(age.length);//打印数组的长度
System.out.println(age);//直接打印数组地址值,说明数组是在内存中开辟一个新空间
}
}
输出结果:
1
2
3
4
100
4
[I@61bbe9ba
格式2: 数组类型[] 数组名 = new 数组类型[长度]
public class ArrayDemo {
public static void main(String[] args) {
//数组 数据类型、长度一致,意义一致
//定义一个用来存放一个班级学生年龄的数组
// int age1 = 15;
// int age2 = 16;
// int age3 = 17;
// int age4 = 18;
// int age5 = 19;
// int age6 = 20;
//数组的默认值,整数0,小数0.0,boolean、false、char 空字符 引用数据类型 null
//格式2 int[] 数组名 = new int[长度]
int[] ageArray = new int[6];//数字6代表6个长度
ageArray[0]=15;
ageArray[1]=16;
ageArray[2]=17;
ageArray[3]=18;
ageArray[4]=19;
ageArray[5]=20;
System.out.println(ageArray[0]);//输出当前数组的地址值
System.out.println(ageArray[1]);
System.out.println(ageArray[2]);
System.out.println(ageArray[3]);
System.out.println(ageArray[4]);
System.out.println(ageArray[5]);
//获取数组的长度 .length方法 数组的最大索引等于数组的长度减1
System.out.print(ageArray.length);
//ArrayIndexOutOfBoundsException 数组越界,如果打印第7个值就会报错
// System.out.print(ageArray[6]); //总长度只有6,索引为6代表第7个
}
}
输出结果:
15
16
17
18
19
20
6
数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 age.length-1,即数组最大索引长度等于数组的长度减1.
**
处理数组
数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 For-Each 循环。
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// 计算所有元素的总和
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// 查找最大元素
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
}
输出结果:
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
格式1:数组类型[][] 数组名 = new 数据类型 [横长度][纵长度] 动态初始化
public class ArrayDemo2 {
public static void main(String[] args) {
int [][] array = new int[2][3];
System.out.println(array[0][0]);
}
}
格式2: 数组类型[][] 数组名 = {{值1,值2},{值1,值2},{值1,值2}}
public class ArrayDemo {
public static void main(String[] args) {
//二维数组 长度是可以不一样的
String [][] basketballSsuperstar = {{"詹姆斯","哈登","杜兰特"},{"科比","乔丹","奥尼尔"},{"波波维奇","斯隆"}};
//打印哈登
System.out.println(basketballSsuperstar[0][1]);
//用韦斯特布鲁克替换哈登 然后打印出来
basketballSsuperstar[0][1] = "韦斯特布鲁克";
System.out.println(basketballSsuperstar[0][1]);
System.out.println(basketballSsuperstar.length);
//分别输出第一排、第三排的长度
System.out.println(basketballSsuperstar[0].length);
System.out.println(basketballSsuperstar[2].length);
System.out.println("================="+basketballSsuperstar[2][1]);
}
}
输出结果:
哈登
韦斯特布鲁克
3
3
2
=================斯隆
Arrays 类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
- 给数组赋值:通过 fill 方法。
- 对数组排序:通过 sort 方法,按升序。
- 比较数组:通过 equals 方法比较数组中元素值是否相等。
- 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作