Java数组-引用数据类型

1.数组初始化

1.1动态初始化(声明并开辟数组)

        数据类型【】 数组名称 = new 数据类型 【长度】

        eg:声明并开辟一个长度为5的数组            int[ ] data = new int[5];

        a.数组通过下标索引来取得元素,下标默认从0开始。数组下标超出数组长度,数组越界异常(运行时异常)

        b.数组中每个元素都有默认值,默认值是该数据类型默认值

        c.数组名称.length:取得数组长度

        d.数组遍历推荐使用for-each循环(仅限于数组内容读取),要修改数组内容,还是使用常规for循环 for(int num:data){...}

        数组属于引用数据类型,必须在使用前先初始化,否则会NullPointerException(空指针异常),也属于运行时异常。

        引用传递:多个栈内存指向同一块堆内存

        eg:

public class test{
    public static void main(String[] args){
        int[] arr = new int[3];
        System.out.println(arr.length);
        arr[0] = 1;
        arr[1] = 2;
        for(int i=0; i<arr.length; i++)
        {
            System.out.print(arr[i]+" ");
        }
        /*
        for(int num:arr)
        {
            System.out.print(num+" ");
        }
        */
    }
}

1.2数组静态初始化

        简化格式: 数据类型【】 数组名称 = {值,值...}

int[] arr = {10,20,30,40};
       
System.out.println(arr.length);

       完整格式(推荐): 数据类型【】 数组名称 = new 数据类型{值,值...}

int[] arr = new int[] {10,20,30,40};
        
System.out.println(arr.length);

1.3二维数组

        动态初始化: 数据类型【】【】 数组名称 = new 数据类型【行个数】【列个数】

        eg:开辟行数为3列数为4的整型数组           int 【】【】 arr = new int 【3】【4】;

    public static void main(String[] args){
        int[][] arr = new int[3][4];
        arr[0][0] = 3;
        for(int i=0; i<arr.length; i++)
        {
            for(int j=0; j<arr[i].length; j++)
            {
                System.out.print(arr[i][j]+" "); 
            }
            System.out.println();
        }
    }

        静态初始化: 数据类型【】【】 数组名称 = new 数据类型【】【】{{第一行的值},{第二行的值} ... }

int[][] arr = new int[][] {{1},{2,3},{4,5,6}};

2.数组与方法的互操作-引用传递

    2.1.方法接收数组

public class test{
    public static void main(String[] args){
        int[] data = new int[]{2,4,6,8,9};
        printArray(data);
    }

    public static void printArray(int[] data){
        for(int temp : data){
            System.out.print(temp+" ");
        }
    }
}

    2.2.方法返回数组

public class test{
    public static void main(String[] args){
        int[] data = init();
        printArray(data);
    }

    public static void printArray(int[] data){
        for(int temp : data){
            System.out.print(temp+" ");
        }
    }
    public static int[] init(){
        return new int[]{2,4,6,8,9};
    }
}

 

    2.3.方法修改数组

public class test{
    public static void main(String[] args){
        int[] data = init();    //对数组进行初始化
        modify(data);           //将数组中的每个数扩大二倍
        printArray(data);       //打印数组中的每个数
    }

    public static void printArray(int[] data){
        for(int temp : data){
            System.out.print(temp+" ");
        }
    }
    public static int[] init(){
        return new int[]{2,4,6,8,9};
    }
    public static void modify(int[] data){
        for(int i=0; i<data.length; i++){
            data[i] *= 2;
        }
    }
}

 

3.Java对数组的支持(可以直接调用)

    1.1.排序-java.util.Arrays.sort(数组名称)

            支持所有基本数据类型

            内部使用双轴快速排序

public class test{
    public static void main(String[] args){
        int[] data = new int[]{55,2,1,3,77,45,99,7,70};
        char[] c = new char[]{'a','b','d','c'};
        java.util.Arrays.sort(data);
        java.util.Arrays.sort(c);
        printArray(data);
        printArray(c);
    }

    public static void printArray(int[] data){
        for(int temp : data){
            System.out.print(temp+" ");
        }
    }
    public static void printArray(char[] data){
        for(char temp : data){
            System.out.print(temp+" ");
        }
    }
}

    2.数组的部分拷贝

            System.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度);

public class test{
    public static void main(String[] args){
        int[] data1 = new int[]{1,2,3,4,5,6,7,8,9};
        int[] data2 = new int[]{11,22,33,44,55,66,77,88,99};
        System.arraycopy(data2,4,data1,1,3);
        printArray(data1);
        //1,55,66,77,5,6,7,8,9  和哪个数组长的更像,那么这个数组为目标数组,另一个为源数组
    }

    public static void printArray(int[] data){
        for(int temp : data){
            System.out.print(temp+" ");
        }
    }
}

    3.数组全拷贝(重点)

            java.util.Arrays.copyOf(源数组名称,新数组长度)

            返回一个新的整型数组

public class test{
    public static void main(String[] args){
        int[] data1 = new int[]{1,2,3,4,5,6,7,8,9};
        int[] temp = java.util.Arrays.copyOf(data1,data1.length+1);
        //只能从最开始拷贝
        printArray(temp);
    }

    public static void printArray(int[] data){
        for(int temp : data){
            System.out.print(temp+" ");
        }
    }
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gx1500291

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值