数组的定义与使用
目前对于数组来说最大的缺陷就是:数组长度是固定的,可能会产生范访问越界
数组的基本概念
数组动态初始化 (声明并开辟数组)
只声明不赋值:数据类型[] 数组名称 = new 数据类型 [长度]
数组动态初始化开辟空间后,若不对其进行赋值,数组的每个元素都是该数据类型的默认值
int[] stu = new int[5];//长度为5 的数组
int[] stu = null;
stu = new int[5];//分布式进行数组实例化
对数组进行数据操作:
数组的数据访问通过下标完成,即:数组名称[下标],要注意下标的范围如果索引下标超过了数组的长度,会出现数组越界异常,java.lang.ArrayIndexOutOfBoundsException: 5
int[] stu = new int[]{2,4,5,7,9};
System.out.println(stu[5]);
stu.length;//取得数组长度
数组属于引用数据类型,因此在使用之前一定要开辟空间(实例化),否则就会产生NullPoninterException
数组引用传递:
数组是引用数据类型,可以发生引用传递
int[] x = null ;
int[] temp = null ; //数组的声明
x = new int[3] ;//对数组分配堆内存空间
System.out.println(x.length) ;
x[0] = 1 ; // 数组第一个元素
x[1] = 2 ; // 数组第二个元素
x[2] = 3 ; // 数组第三个元素
for (int i = 0; i
引用传递实际上就是:同一块堆内存被不同的栈内存指向
数组静态初始化:数据类型[] 数组名称 = new 数据类型 [长度]{赋值}
完整格式:int[] stu = new int[5] {1,2,3,4,5};
简化格式:int[] stu = {1,2,3,4,5};
匿名数组:new int[]{1,22,333,4444,55555};
匿名数组也可以通过length得出长度:
System.out.println(new int[]{1,2,33,444,56}.length);//输出5
数组的使用:
数组的引用数据类型,所有的引用数据类型都可以为其设置多个栈内存指向,对于数组的操作也可以通过方法进行处理
方法接收数组:
//方法接收数组
public static void main(String[] args){
int[] arr = new int[]{1,3,5,7,9};
PrintArray(arr);
}
public static void PrintArray(int[] data){
for(int i=0; i
方法返回数组:
//方法返回数组
public static void main(String[] args){
int[] arr = init();
PrintArray(arr);
}
public static int[] init(){//返回值类型为数组
return new int[]{1,3,5,7,9};
}
public static void PrintArray(int[] data){
for(int i=0; i
方法修改数组:
//方法修改数组
public static void main(String[] args){
int[] arr = init();
change(arr);
PrintArray(arr);//6 ,8 ,10 ,12 ,14
}
public static int[] init(){
return new int[]{1,3,5,7,9};
}
public static void change(int[] data){//对数组数据进行+5操作
for(int i=0; i
Java对数组的支持:
数组排序(升序):java.util.Array.sort(数组名称)
public static void main(String[] args){
int[] arr = new int[]{66,3,46,25,95,37};
char[] tmp = new char[]{'n','d','o','r','g'};
java.util.Arrays.sort(arr);
java.util.Arrays.sort(tmp);
PrintArray(arr);
PrintArray(tmp);//输出结果3 25 37 46 66 95 d g n o r
}
public static void PrintArray(int[] data){
for(int i=0; i
数组拷贝:(将原数组拷贝到目标数组里)
System.arraycopy(原数组名称,原数组开始点,目标数组名称,目标数组开始点,拷贝长度)
原数组arr1:1,2,3,4,5,6,7
目标数组arr2:11,22,33,44,55,66,77
拷贝之后结果:11 22 3 4 5 6 77
//数组拷贝
public static void main(String[] args) {
int[] arr1 = new int[]{1,2,3,4,5,6,7};
int[] arr2 = new int[]{11,22,33,44,55,66,77};
System.arraycopy(arr1,2,arr2,2,4);
PrintArray(arr2);
}
public static void PrintArray(int[] data){
for(int i=0; i