请养成查阅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();
}
补充
- 使用apache.commons.lang3包ArrayUtils类(为一个小功能引入一个jar包显然不值当)值得一提的是这货调用toStringBuilder实现了各种花式的数组打印方式,用户只要传参(数组和格式)就好
- Array类用法(好原生的味道,可是为毛大家笔记中都是备选方案QAQ)