数组
概念:
数组是一组连续的内存空间,用于存储多个类型相同的值
数组的创建语法
数据类型[] 数组名 = new 数据类型[长度];
int[] arr = new int[5]
数据类型[] 数组名 = { value1,value2, ... };
int[] arr = {1,2,3,4,5,6,7 }
概述:
- 数组中的每个空间称为空间元素。
- 对每个元素进行赋值称为元素访问
- 使用下标访问元素(下标从0开始)
- 访问语法:nums[0]
- 数组长度获取:数组名.length(例:nums.length)
如果下标超出范围,引发ArrayIndexOutOfBoundsException异常。
例:
public static void mian(String[] args){
String[] nums = new String[3];
nums[0] = "迪迦奥特曼";
nums[1] = "戴拿奥特曼";
nums[2] = "盖亚奥特曼";
arrList(nums);
}
//将数组遍历打印进行封装
public static void arrList(Object[] nums){
for(int i = 0; i < nums.length -1; i++){
System.out.println(nums[i]);
}
}
数组的默认值
对应一个新创建的数组,元素是有默认值的,数据类型不同,默认值不同。
byte short int long : 0
float double : 0
char : ‘\u000’
boolean: false
其他引用类型: null
数组扩容
一个数组一旦声明数组的长度就固定了,不可改变,如果需要存入更多的元素,取需要扩容,那么扩容的思想是,创建一个新的更大的数组,再把数组元素拷贝过去,最后把新数组的地址赋值给 旧数组。
1.原始方法
public static void expand(int[] nums){
int new Arr = new int[nums.length *2];
for(int i = 0; i < nums.length; i++){
newArr[i] = nums[i];
}
}
2.利用System工具方法
public static void expand(int[] nums){
//System.arraycoppy(原数组,拷贝的起始位置,新数组,复制的起始位置,数组的长度);
System.arraycopy(arr,0,newArr,0,arr.length);
}
- Arrays.copyOf ()最便利的方式
public static void expand(int[] nums){
//Arrays.copyOf (原数组,数组长度)
int[] bigArr = Arrays.copyOf(arr,10);
}
数组作为参数和返回值
数组作为一种引用数据类型,也可以作为方法的参数和返回值,与基本数据类型的区别是,引用数据类型传的是地址
例:数组作为参数,
public static void mian(String[] args){
String[] arr = new String[5];
System.out.println(arrStr[]);
}
public static String[] arrStr(String[] str){
String str1 = "HellowWord";
for(int i= 0; i < str.length; i++){
//往数组里存HellowWord
str[i] = str1;
}
//以数组作为参数,返回一个数组地址
return str;
}
例:数组作为返回值:
public static void main(String[] args){
String[] data = getArray();
System.out.println(data[0]) // data 地址为0x222
}
public static String[] getArray(){
String[] arr = {"小红","小明","晓东"};
System.out.println(arr); // arr 地址为 0x222
return arr; //返回数组的地址
}
总结: 返回数组名,本质上返回的是数组的地址。
排序