类System中是这样定义in的:
public final static InputStream in = nullInputStream();函数是这样的:
private static InputStream nullInputStream() throws NullPointerException {
if (currentTimeMillis() > 0)
    return null;
throw new NullPointerException();
    }这样定义的in不是表明不指向任何对象吗,那怎么可以用的,何况它也不可能在其他地方改变的:
  final
但我们还是经常在用,我的问题:对于指向null的引用怎么能用呢?
System.out也是一样的问题。请各位帮帮忙,帮我解释一下,谢先了。

解决方案 »

  1.   

    system.in是指接收从控制台输入的数据
      

  2.   

    但是从源代码中看不出任何迹象,
    只能看出它指向null
      

  3.   

    这个问题不能通过正常的Java程序逻辑来解释
    System.in的赋值其实是通过JNI原生函数调用C/C++方法获取操作系统的输入流,属于比较底层的超作