数组是一个容器,储存多个相同类型的数据 数组也是一个引用数据类型
2. 特点
-
长度固定
-
数组元素数据类型相同
-
数组名对应内存中的一个地址值
-
数组有一个属性length 表示数组中元素的个数
-
数组中下标 0 到 length-1 ,访问元素时用 数组名[下标]
3. 优缺点
-
优点:连续储存 便利速度快
-
缺点:
-
随机删除添加一个元素时,操作复杂
-
数组扩容比较消耗内存
-
4. 定义
1. 声明 数据类型[ ] 数组名;
2. 开辟空间 数组名 = new 数据类型 [长度];
3. 赋值 数组名[下标] = 值;
4. 使用
// 声明和开辟空间可以合并写
数据类型 [] 数组名 = new 数据类型 [长度];
// 数组可以直接声明并赋值
数据类型 [] 数组名 = {元素};
5. 默认值
-
整形:0
-
浮点型:0.0
-
字符型:u0000
-
布尔型:false
-
引用类型:null
6. 扩容复制
-
System.copyarray(原数组,起始下表,新数组,起始下标,复制的长度);
-
import java.util.Arrays;
// 可以直接返回一个新数组
Arrays.copyOf(原数组,新数组长度);
7. 排序
-
import java.util.Arrays;
// 无返回值类型 按照从小到大升序排序
Arrays.sort(数组); -
// 冒泡排序
int[] arr = {2,4,1,3,5};
for(int i = 0;i<arr.length-1;i++){
for(int j = 0;j<arr.length-1-i;i++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
8. 查找
-
顺序查找
-
import java.util.Arrays;
// 返回的是下标,若是不存在返回一个负数
Arrays.binarySearch(数组名,要查找的数字);
9. 二维数组
数据类型[][] 二维数组名 = new 数据类型[二维数组长度][每个元素数组的长度];
每个元素都是一维数组的数组,每个元素都是一个一维数组的数组名,对应内存中的地址值
注意:
1. 数组为引用数据类型,数组名中储存的是一个地址值
2. 数组名如果直接互相赋值,赋值传递的是地址值,导致两个数组操作的是同一块内存
3. 基本数据类型直接赋值,传递的只是变量值,操作的不是同一块内存