Java SE 之数组的定义与使用(一)

数组的定义与使用

目前对于数组来说最大的缺陷就是:数组长度是固定的,可能会产生范访问越界

数组的基本概念
    数组动态初始化 (声明并开辟数组)
    只声明不赋值:数据类型[] 数组名称 = 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<x.length ; i++) {
		System.out.println(x[i]) ; // 输出数组元素
	}
	temp = x ; //引用传递,不要出现[]
	temp[0] = 55 ; // 引用传递后修改数据
	System.out.println(x[0]);//原数组输出修改后的数据

引用传递实际上就是:同一块堆内存被不同的栈内存指向

数组静态初始化:数据类型[] 数组名称 = 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<data.length; i++){
            System.out.println(data[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<data.length; i++){
            System.out.println(data[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<data.length; i++){
            data[i] = data[i] + 5;
            //data[i] += 5;
        }
    }
    public static void PrintArray(int[] data){
        for(int i=0; i<data.length; i++){
            System.out.println(data[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<data.length; i++){
            System.out.print(data[i]+" ");
        }
    }
	//方法重载
    public static void PrintArray(char[] data){
        for(int i=0; i<data.length; i++){
            System.out.print(data[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<data.length; i++){
        System.out.print(data[i]+" ");
        }
    }

猜你喜欢

转载自blog.csdn.net/ly52014/article/details/84316876