我正在检查System.out.println()
的内部实现。尽管我了解了它是如何工作的,但无法弄清楚:
System
类。他们本可以直接使用PrintStream
软件包中提供的io
类。
className.referenceVariable.Methodname
语法的意义是什么,因为我们通常不使用它。有什么具体原因吗?
任何人都可以详细说明这些观点或任何相关信息。
答案 0 :(得分:1)
根据我的理解,System
类名用于指示与运行JVM的系统的任何交互。在系统控制台上执行读取或写入操作,或在系统中读取环境变量等。
您始终可以直接直接使用PrintStream
,并且没有任何危害。但是随后您必须每次在类中创建一个PrintStream
对象,并调用内部的方法使用它。相反,它已经在System类中静态创建,以便我们随时使用。
对于您的第三个查询,Eran已经在评论中回答了。
答案 1 :(得分:1)
System
类指出:
System
类提供的功能包括标准输入,标准输出和错误输出流;访问外部定义的属性和环境变量;一种加载文件和库的方法;以及用于快速复制数组一部分的实用方法。
由于您正在检查System
类的源代码,因此您可能已经注意到out
对象是final
并被设置为null
。是setOut()
方法,它为out
变量赋值(这是本机代码)。
我知道,JVM在将值设置为null后如何将其设置为final
变量,对吗?成为JVM有其自身的优势!
在将值分配给out
对象之前,还会触发称为checkIO
的单独方法,该方法检查IO权限。
因此System
类被设计为标准输入,输出和错误流的集合。它还指示JVM初始化对象,例如out
对象。
关于System.out.println()
的语法,Eran已经对其进行了解释。