1. 数组的定义
相同类型的数据的有序集合
int[ ] nums;
int nuts[ ];
两种都可以,但是首选第一种
int[ ] nums; // 声明一个数组
nums =new int[10]; // 分配一个10个 int 类型数字的空间,创建一个数组
也可以将声明和创建数组简化为一行:
int[ ] nums =new int[15];
给数组元素赋值:
nums [?]=?;
2. 计算数组元素和
int sum =0;
for (int i =0; i < nums.length; i++) { // nums.length 获取数组长度
sum = sum + nums[i];
}
System.out.println("总和为:"+ sum);
3. 内存分析
内存分析:
在声明时,在栈中压入数组名(仅有数组名字,内部为空)
在创建数组时,在堆中开辟了一个内存,空间分成(数组大小)的份
在赋值时,在堆中给每一份空间赋值
4. 三种初始化
静态初始化
// 静态初始化,除了用 new 定义,也可以直接定义,可以理解为结合了 创建 + 赋值 两个步骤
int[ ] a = {0,1,2,3,6,9};// 放多少,空间就是多大,一旦定义,空间大小不可改变
动态初始化
// 动态初始化
int[] b =new int[10]; // 创建之后里面的默认值为0
数组的默认初始化
数组是引用类型,他的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化
5. 数组的四个基本特点
1. 长度确定,一旦被创建,就不可以改变
2. 元素必须是相同类型,不能混合类型
3. 元素可以是任何数据类型,包括基本类型和引用类型
4. 数组变量属于引用类型,数组也可以看做是对象,数组中的每个元素相当于钙对象的成员变量。数组本身就是对象,Java 中对象是堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身都是在堆中的。
6. 数组边界
下标的合法区间:【0,length-1】越界会报错:ArrayIndexOutofBounds
7. 数组的使用
基本用法:
public static void main(String[ ] args) {
int[ ] array = {2,3,4,5,8};
// 打印全部的数组元素
for (int i =0; i < array.length; i++) {
System.out.println(array[i]);
}
System.out.println("===================================");
// 计算所有元素的和
int sum =0;
for (int i =0; i < array.length; i++) {
sum += array[i];
}
System.out.println("sum="+sum);
System.out.println("===================================");
// 查找最大元素
int max = array[0];
for (int i =1; i < array.length; i++) {
if(array[i]>max){
max = array[i];
}
}
System.out.println("max"+max);
}
高级用法:
// for each 循环
int[ ] array = {2,4,7,4,7};
for (int i : array) { // 输入 数组名 . for 然后点回车
System.out.println(i);// i 表示数组里面每一个值
}
特点:没有输出,比较适合打印输出,但是要是操作里面的元素,这种方式可能没那么适合
// 数组做方法入参
例如:打印数组元素的方法
public static void printArray(int[ ] arrays){
for (int array : arrays) {
System.out.print(array+" ");
}
}
// 数组作返回值
例如:反转数组
public static int[ ] reverse(int[] array){
int result[ ] =new int[array.length];
for (int i =0, j = array.length-1; i < array.length; i++,j--) {
result[j] = array[i];
}
return result;
}
注意:返回的是数组,在 main 里用的时候要对其定义。
int[ ] reArray =reverse(array);
8. 多维数组
定义
int[ ][ ]array = {{1,2},{2,2},{5,6}};
1,2 array[0]
2,2 array[1]
5,6 array[2]
// 打印多维数组
for (int i =0; i < array.length; i++) {
for (int j =0; j< array[i].length; j++) {
System.out.println(array[i][j]);
}
}