当我尝试打印未初始化的 静态字符数组 时,会出现运行时错误(空指针异常),而未初始化的 静态整型数组 则会给出 null 值。为什么?
public class abc {
static int arr[];
static char ch[];
public static void main(String[] args) {
System.out.println(ch); //it gives null pointer exception at run time
System.out.println(arr); //it gives output as "null".
}
}
println()
的字符数组版本是经过重载的,它会尝试将数组作为字符串打印出来,而int[]
版本则仅将其作为数组打印出来。当使用char *
或者通用的void *
指针调用时,请参考 C++ 中的std::cout::operator<<
。 - The Paramagnetic Croissantprintln
重载有关,与数组本身无关。int []
和char []
本质上是相同的,除了int
是4字节有符号数据,而char
是2字节无符号数据。 - Hot Licks