zoukankan      html  css  js  c++  java
  • System.out.println()中传入null会发生什么《转载》

    之前做了思科大数据开发工程师的笔试题,其中有一道题目是判断一段Java代码的输出结果,最后实质上是判断System.out.println()括号中如果传入null会输出什么。在回顾当时的题目时,找到一个国外大学的教师写的博客讲得很详细:

    https://yourbasic.org/print-null-java/

    主要的意思就是,System.out.println()括号中如果传入null,不同形式的null最终的输出也不同。如果是直接传入null:

    System.out.println(null);

    会在编译时报错,即无法确定传入的值是属于字符数组对象还是String对象,错误信息如下:

    reference to println is ambiguous, both
    method println(char[]) in java.io.PrintStream and
    method println(java.lang.String) in java.io.PrintStream match

    也就是说,System.out.println()在输出结果的时候括号内的参数有两种,char[]和String(或Object)。一般必须显式指定传入的值所属的对象类别。如果传入Object或String对象:

    Object o = null;
    String s = null;
    System.out.println(o);
    System.out.println(s);

    输出如下所示:

    null
    null

    所以如果传入的null值是Object或者String对象的形式,最终的输出就是null。但如果传入的是字符数组char[]

    1. char[] a = null;
    2. System.out.println(a);

    最终会抛出空指针异常,如下所示:

    Exception in thread "main" java.lang.NullPointerException
        at java.io.Writer.write(Writer.java:127)
        at java.io.PrintStream.write(PrintStream.java:470)
        at java.io.PrintStream.print(PrintStream.java:620)
        at java.io.PrintStream.println(PrintStream.java:759)
        ...

    因为数组的引用指向null,所以访问该字符数组对象时就会找不到实际的char[]实例,就不会有正常输出。

    原文链接:https://blog.csdn.net/qq_33588730/article/details/82943770
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    SQL经常使用语法
    【LeetCode】Generate Parentheses 解题报告
    Linux进程间通信(IPC)
    Android菜单menu控件大全
    Android入门常见问题
    c++ struct与class的差别
    hdu 2011 多项式求和
    Android安全机制介绍
    HDOJ 4003 Find Metal Mineral
    HDU 2845 Beans (两次线性dp)
  • 原文地址:https://www.cnblogs.com/name-lizonglin/p/14614248.html
Copyright © 2011-2022 走看看