为什么char []数组不显示任何输出?

诺兰先生:

为什么以下程序中的char []不打印任何输出,而当用其他数组类型int []或float []或String []等替换时,相同的打印输出

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]);
    }
}

输出:[I @ 4cc77c2e

0

乔尼:

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

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

第二个程序产生不同的输出,因为println方法对char数组具有特殊的重载,但对于其他数组则没有这意味着第二个程序将打印int数组的字符串表示形式,该形式[I@采用十六进制形式,后跟数字。

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章