为什么以下程序中的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] 删除。
我来说两句