直接用system.out.println();输出一个数组,不是字符数组,而是乱码?如[I@14

对于一个数组,如int[] arr = new int[] { 2, 3, 67, 1, 34, 23 };
直接打印是结果是乱码System.out.println(arr);?如[I@b9e45a?
这是怎么回事

那是因为System.out.println这个方法,默认调用的是对象的toString()方法的内容,[表示数组,I表示int类型,b9e45a是对象名。
这就是int[] arr对象的toString内容。
如果要打印数组,用Arrays这个工具类:

 System.out.println(Arrays.toString(arr));

这是内存地址 不是乱码

在数组中除了char型(比如说:char[] b={'f','b','c'};)的可以直接输出外,其它类型的数组输出都是内存地址(那个不是乱码)。
如果要想输出数组里面的内容可以用循环,简单的如for循环

 int[] a={5,2,3,4,5};
        for(int i=0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }