Java System.out.println语句中存在问题

Java System.out.println语句中存在问题,java,import,Java,Import,每当我们在Java程序中编写任何要打印到控制台的语句时: System.out.print或System.out.println 在上面的两个语句中,我们调用了PrintStream对象的引用变量,而没有显式导入java.io包,那么我们如何访问该对象方法而不产生任何编译时错误呢?系统对象中嵌入了对java.io.PrintStream对象的引用。因此,您不需要显式导入这些信息-运行时可以明确地派生这些信息,因为它是在编译时嵌入的 如您所知,如果直接使用PrintStream对象,则必须导入该对

每当我们在Java程序中编写任何要打印到控制台的语句时:

System.out.print
System.out.println


在上面的两个语句中,我们调用了PrintStream对象的引用变量,而没有显式导入java.io包,那么我们如何访问该对象方法而不产生任何编译时错误呢?

系统对象中嵌入了对
java.io.PrintStream
对象的引用。因此,您不需要显式导入这些信息-运行时可以明确地派生这些信息,因为它是在编译时嵌入的

如您所知,如果直接使用
PrintStream
对象,则必须导入该对象。编译阶段不知道在哪里可以找到它(它可以搜索,但这很容易给出不明确的结果)


另外请注意(如果有任何混淆),
java.lang
是隐式导入的,因此您不需要为
System

导入语句,只需要为希望声明的类导入类名。例如:

PrintStream out = System.out;

除非您导入
java.io.PrintStream
,否则不会编译,但您可以使用System.out之外的方法,因为它是在该点“隐式”导入的,因为编译器确切知道
System.out
是什么类型。例如,在某些语言中,您也不需要声明变量的类型,因为它可以通过以下方式计算。

导入是一种语法糖,允许您避免每次键入,例如
java.io.File File=new java.io.File(“foo.txt”)
,但允许您键入
File=new File(“foo.txt”)

没有别的了

因此,除非您必须创建一个新对象或将一个对象分配给一个变量,并且您希望避免写出完整的类名,否则您不需要进行任何导入

(在上面考虑的接口是一个覆盖下的类)