在看学习下面的知识前,得先对java核心类库有个大致的了解,详情可参考链接 java基本概念-扩展点-CSDN博客
1、System
1.1 System是什么?
System是一个类,它包含了一些有用的属性和方法。
1.2 System实现的功能
(1)系统信息的访问,如外部属性和环境变量等
(2)垃圾回收相关操作
(3)标准输入输出
(4)比较常用的其他操作,比如数组拷贝
1.3 System的特点
(1)System位于java.lang包下,所以使用这个包下的类无需通过import导包,系统会自动导入这个包中的所有类。
(2)System被 final修饰,所以它不可被继承。
(3)System类内部的构造函数被设置为私有,因此不能被实例化。
(4)System类内部的属性和方法都被设置为静态的属性和方法,因此可以通过类名直接访问。
2、为什么不能直接输出 null?
通过分析System可以知道,out是System类下的属性,out 的属性类型是 PrintStream,下面再看看PrintStream下有啥:
在说明为什么不能直接输出 null 之前,得对 null 有个大致的认识;
null 是什么?
null 既是一个关键字,也是一种表现符号,它的作用是表明引用对象此时没有指向任何一个对象。Java虚拟机的规范中也没有规定 null 的具体值。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。
对null有个大致的认识之后,看下图所示:
因为out调用的是PrintStream类下的println()方法,而println()方法是一个重载方法,看下图所示:
简单分析,由于null指向引用对象,而且println()重载方法有两个参数是引用参数,所以通过 System.out.println(null) 去调用该方法时,虚拟机就不知道去调用哪个方法,就会产生二义性,也就是出现下图错误:
本文为学习笔记,所参考文章均已附上链接,若有疑问请私信!
创作不易,如果对你有点帮助的话麻烦点个赞支持一下!
新手小白,欢迎留言指正!