java - char和int数组的区别

标签 java

当我尝试打印未初始化的static char 数组 时,它给出了运行时错误(空指针异常),而未初始化的static int 数组 给出了空值。为什么?

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".
        }
    }

最佳答案

System.outPrintStream 的一个实例,这个类有一些重载的 println 方法。在你的情况下:

  1. System.out.println(ch); 正在使用 public void println(char x[])
  2. System.out.println(arr); 正在使用 public void println(Object x)(没有 public void println(int[] x ) 方法,因此 println 可以使用的 int[] 最接近的可用类型是 Object)。

第二种方法是使用

String.valueOf(x);

获取我们要打印的对象的字符串表示,valueOf 方法的代码如下所示

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

因此它是 null 安全的(如果引用持有 null,将返回字符串 "null")。

第一种方法在某种程度上使用

public void write(char cbuf[]) throws IOException {
    write(cbuf, 0, cbuf.length);
                 //    ^^^^^^^ this throws NPE
}

并且因为 cbufnull cbuf.length 会抛出 NullPointerException 因为 null 没有 length(或任何其他)字段。

关于java - char和int数组的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24833562/

相关文章:

c# - 如何解决这个奇怪的多循环场景(Java 或 C#)?

java - GCP-PUBSUB :-sun. security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

java - 何时对具有静态数据的类进行垃圾回收

JavaFx - 在主窗口旁边打开窗口

java - 对常量使用接口(interface)还是类?

java - System.currentTimeMillis 与 System.nanoTime

java - 读取连续传入的数据(usb4java)

javascript - 即使预检响应成功,访问仍被 CORS 策略阻止 存在 'Access-Control-Allow-Origin' 通配符

java - 在一个 Activity 中调用其他 Activity ?

java - UML 类图资源