Java数组打印

请养成查阅API的习惯

起源

使用数组,测试经常需要看值,一个个遍历麻烦(这时候懒病犯了)
能不能像list一样,重写数组toString 方法,使其直接打印内容而不是地址

尝试toString

Array内没有toString方法(懵)
(大力出奇迹)呵呵,不出所料。无法传值。

解决方案

1.乖乖foreach(这方法怎么都觉得蛋疼……)

for (String str : arry) {
    System.out.print(str+"\t");
}
System.out.println();

2.使用Arrays类

该类提供了操作数组的各种方法,包括常用的排序,查找等方法……

Arrays.toString(arr);

看源码,Java源码中使用重载的方法这里贴上 int[]

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(", ");
        }
    }

一切皆懒病,没查API之前自己写了一个不重载的🙃

贴代码

public static String ArrayToString(Object[] array) {
        //若为空返回null
        if (array == null)
            return "null";

        //若数组长度为0,即空数组
        int len = array.length;
        if (len == 0)
            return "[]";

        //新建一个StringBuffer将数组值遍历进去
        StringBuffer builder = new StringBuffer("[]");
        for (int i = 0;i<len; i++) {
            builder.insert(1,String.valueOf(array[i])+",");
        }
        //删除最后一个碍眼的","
        return builder.delete(builder.length()-2, builder.length()-1).toString();
    }

补充

  1. 使用apache.commons.lang3包ArrayUtils类(为一个小功能引入一个jar包显然不值当)值得一提的是这货调用toStringBuilder实现了各种花式的数组打印方式,用户只要传参(数组和格式)就好
  2. Array类用法(好原生的味道,可是为毛大家笔记中都是备选方案QAQ)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容