数组的三种声明方式总结、多维数组的遍历、Arrays类的常用方法总结

1. 数组的三种声明方式
参考文章

先引入一篇java中数据的5种存储位置(堆与栈)
java中数据的5种存储位置(堆与栈)
数组是引用变量,看一下他的存储方式
https://blog.csdn.net/qq_42869583/article/details/84305548

public class demo1 {
    public static void main(String[] args) {

    //第一种 过于麻烦
    int[] a = new int[3];
    a[0] = 1;
    a[1] = 2;
    a[2] = 3;
    for(int i : a){
        System.out.println(i);
    }

    //第二种(比较常用)
        String[] s = {"张三","李四","tom"};

    //第三种 不常用
        int[] c = new int[]{1,2,3};
        
    }

}

2. 多维数组的遍历

public class demo1 {
    public static void main(String[] args) {

        //二维数组的遍历
        //第一种
       int[][] a = {{1,2,3},{4,5,6},{7,8,9}};
         for(int i = 0; i < a.length; i++){
            for(int j = 0; j < a[i].length; j++ ){
                System.out.print(a[i][j]+" ");
            }
            System.out.println();
        }
        //第二种 遍历每个二维数组中的一维数组
        for(int[] a1 : a){
            for(int a2 : a1){
                System.out.print(a2+" ");
            }
            System.out.println();
        }



        //三维数组的遍历
        int[][][] b = {{{1,2},{4,5}},{{6,7},{8,9}},{{10,11},{12,13}}};
        for(int i = 0; i < b.length; i++){
            for(int j = 0; j < b[i].length; j++){
                for(int k = 0; k < b[i][j].length; k++){
                    System.out.print(b[i][j][j]+" ");
                }
                System.out.println();
            }

            System.out.println();
        }
    }
}


3. Arrays类的常用方法总结
该类包含用于操作数组的各种方法(如排序和搜索)。 该类还包含一个静态工厂,可以将数组视为列表。
如果指定的数组引用为空,则该类中的方法都抛出一个NullPointerException ,除非另有说明。

搞清楚Array 和Arrays 是不同的 不明白开下面这个博客
https://blog.csdn.net/guo0820/article/details/51030526?utm_source=blogxgwz8

  • Arrays.asList的用法
import java.util.Arrays;
import java.util.List;

public class demo1 {
    public static void main(String[] args) {

        /**
         *  使用工具类Arrays.asList()把数组转换成集合时,
         *  不能使用其修改集合相关的方法,
         *  它的add/remove/clear方法会抛出UnsupportOperationException异常
         * 说明:asList的返回对象是一个Arrays内部类,并没有实现集合的修改方法。
         * Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍是数组。
         *
         */

        String[] str = {"123","456"};
        List<String> list = Arrays.asList(str);
        //list.add("a"); //运行时异常
        for(String s : list){
            System.out.println(s);

        }
        System.out.println(list.size());//结果为2

        //
        int[] a = {1,2,3,4};
        System.out.println(Arrays.asList(a).size()); //结果为1
        
        //看看引用类型
        Integer[] b = {1,2,3,4};
        System.out.println(Arrays.asList(b).size()); //结果为4
        
        /*
        注意这里输出的数量是1,原因是,在Arrays.asList中,该方法接受一个变长参数,
        一般可看做数组参数,但是因为int[] 本身就是一个类型,所以a变量作为参数传递时,
        编译器认为只传了一个变量,这个变量的类型是int数组,所以size为1。
        基本类型是不能作为泛型的参数,按道理应该使用包装类型,但这里缺没有报错,
        因为数组是可以泛型化的,所以转换后在list中就有一个类型为int的数组

	说明编译器对Integer[] 处理不一样。Integer是可变长参数。传入过程中	  asList()	方法实际是将Integer数组里的元素进行存储。
         */


    }
}
  • copyOf()的用法

这个方法是从原数组的起始位置开始复制,复制的长度是newlength。只能从原数组的起始位置开始复制。

参考博客:https://blog.csdn.net/just16cz/article/details/80385101

import java.util.Arrays;

public class demo1 {
    public static void main(String[] args) {

       int[] a = {1,23,3,5,6,7};
       int[] b = null;
       b = Arrays.copyOf(a,4);  //只能从其实位置开始复制
        for(int m : b){
            System.out.print(m+" ");
        }
        System.out.println();
        b = Arrays.copyOfRange(a,1,3); //该方法是从original数组的下标from开始复制,到下标to结束
        for(int n : b){
            System.out.print(n+" ");
        }
    }
}

  • sort()方法

参考博文
https://blog.csdn.net/github_38838414/article/details/80642329

import java.util.Arrays;

public class demo1 {
    public static void main(String[] args) {

       int[] a = {1,23,3,5,6,7};
        Arrays.sort(a);
        for(int m : a){
            System.out.print(m+" ");
        }

    }
}

源码暂时不理解 以后会更新

  • Arrays.toString方法
import java.util.Arrays;

public class demo1 {
    public static void main(String[] args) {

        int[] a = {1,23,3,5,6,7};
        System.out.println(a);  //打印出数组的地址
        System.out.println(Arrays.toString(a)); //打印数组中的内容

    }
}

toString源码

    public static String toString(int[] a) {
        if (a == null)
            return "null";
        int iMax = a.length - 1;
        if (iMax == -1)
            return "[]";

        StringBuilder b = new StringBuilder();
        b.append('[');
        for (int i = 0; ; i++) {
            b.append(a[i]);
            if (i == iMax)
                return b.append(']').toString();
            b.append(", ");
        }
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值