java - 在 java 中,System.out.println 方法如何在静态和非静态上下文中工作?

标签 java static non-static system.out

System.out.println 方法如何在静态和非静态上下文中工作?

是否有任何特定于 JVM 的实现可以解决这个问题?

最佳答案

System.out是静态字段/全局对象/单例。

它随处可访问,不需要非静态上下文。

在该对象(PrintStream 实例)上,您可以调用 println 方法。

请注意 PrintStream#println 不是静态方法。但是您甚至可以从静态方法调用非静态方法,只要您有一个实例可以调用它们(例如此处的 System.out)。

静态与非静态上下文只有在您需要访问 this(您自己类的当前实例)时才会有所不同。此处不需要(除非您想执行 System.out.println(this) —— 这在静态方法内部不起作用)。

这些都不是关于 System.out 的“特殊”,也不需要内部 JVM 魔法。

关于java - 在 java 中,System.out.println 方法如何在静态和非静态上下文中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58029235/

相关文章:

java - Java中的List如何实现静态对非静态的引用?

java - 访问非静态嵌套类

java - 如何将已检查的异常从 CompletableFuture 传递到 ControllerAdvice

java - 如何在 JButton 中正确对齐多行文本?

java - hibernate 第一个应用程序

java - 如何在 Play! 的静态方法中使用 play.cache.CacheApi框架 2.4.2

java - Java中静态方法中调用非静态方法

java - 如何从 jar 运行特定的主类

javascript - 如何在javascript类中制作静态数组?

java - 扩展由java中的静态方法返回的对象