为什么打印char []数组不打印任何输出?

时间:2020-07-20 14:51:50

标签: java arrays char

为什么在以下程序中打印char []不会打印任何输出,而当char []被其他数组类型int []或float []或String []等替换时,同一程序将打印输出< / p>

public class Test5 {
    public static void main(String[] args) {
        char arr[] = new char[5];
        System.out.println(arr);
        System.out.println(arr[0]);
    }
}

而以下内容使用int []打印输出

public class Test5 {
    public static void main(String[] args) {
        int arr[] = new int[5];
        System.out.println(arr);
        System.out.println(arr[0]);
    }
}

OutPut:[I @ 4cc77c2e

0

1 个答案:

答案 0 :(得分:1)

您的第一个程序确实产生输出。输出恰好采用不可见控制字符的形式。

当创建一个char数组时,它会填充"NUL" characters(不要与Java空引用值混淆),它们的Unicode代码点为0。该字符是不可见的控制字符,并且是终端不显示它。如果您打印到其他输出设备(例如文件),然后打开该文件,则会看到它。

第二个程序产生不同的输出,因为println method has a special overload for char arrays but not for other arrays。这意味着第二个程序将打印int数组的字符串表示形式,其形式为[I@,后跟十六进制数字。

如果希望第一个程序提供类似的输出,则需要使用不同版本的println方法。这些都可以工作:

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