【发布时间】:2019-09-20 13:22:02
【问题描述】:
System.out.println 方法如何在静态和非静态上下文中工作?
是否有任何 JVM 特定的实现可以解决这个问题?
【问题讨论】:
标签: java static non-static system.out
System.out.println 方法如何在静态和非静态上下文中工作?
是否有任何 JVM 特定的实现可以解决这个问题?
【问题讨论】:
标签: java static non-static system.out
System.out 是一个静态字段/全局对象/单例。
它随处可访问,无需非静态上下文。
在该对象(PrintStream 实例)上,您可以调用 println 方法。
请注意,PrintStream#println 不是静态方法。但是你可以调用非静态方法,即使是静态方法,只要你有一个实例可以调用它们(比如System.out这里)。
仅当您需要访问this(您自己的类的当前实例)时,静态与非静态上下文才会有所不同。这里不需要这样做(除非你想做System.out.println(this)——这在静态方法内部是行不通的)。
对于System.out,这些都不是“特殊”的,也不需要内部 JVM 魔法。
【讨论】: