解释 System.out.println()
只要写过 Java,十有八九跟 System.out.println() 打过照面。它几乎是每个“Hello, World”的起点。
但这行看起来理所当然的代码,到底在干嘛?不妨拆开来瞧一眼。
先看一个更简单的例子:
class Demo {
static String s = "Hello World";
}
这里我们定义了一个 Demo 类,在类里声明了一个静态字符串变量 s,值是 "Hello World"。
现在,如果我想获取字符串 s 的长度,可以这么写:
Demo.s.length();
来按顺序拆一下这行代码:
Demo:类名,也就是刚才定义的那个类。s:定义在Demo类中的一个 静态String变量。length():String类提供的,用来获取字符串长度的方法。
所以整行可以读成:
“从
Demo这个类里,拿到静态变量s,然后调用s这个字符串的length()方法。”
有了这个基础,再回头看今天的主角:System.out.println()。
如果你去翻一下 JDK 源码,会在 System 类里看到和 out 相关的声明,大致是这样:
public static final PrintStream out;
不用太纠结初始化的细节,只要记住这件事:
out是定义在System类中的一个 公有的、静态的PrintStream对象,用来代表“标准输出”。
于是把 System.out.println() 拆开看,就很像刚才那个 Demo.s.length() 的结构:
System:一个和“外部环境”打交道的类,负责标准输入 / 标准输出 / 错误输出等。out:System类里声明的一个静态PrintStream对象,表示“标准输出流”。println():PrintStream提供的方法,用来把内容打印到标准输出(通常就是控制台),并在末尾换行。
把它翻译成人话,大概就是:
请
System这个类,拿出它的标准输出流out, 然后在这个输出流上,调用println(),把我要打印的东西丢到控制台上,并顺便换个行。
所以下次再看到 System.out.println("Hello World"); 的时候,你可以在脑子里自动附送一行注释:
“从
System里拿标准输出流,把"Hello World"打印到屏幕上,然后换行。”
看似平平无奇的一行代码,其实已经帮你走完了:找到类 → 拿到静态字段 → 调用方法 → 输出到终端 这一整套流程。