在Java中,System 这个类是由 final
关键字修饰的,表明这是一个不可被继承类,而 out
这个变量实际上是System类中的一个静态的、公有的、final
的打印流对象。这个对象被定义在System类中,可以被所有的类和对象访问和使用,用来进行输出操作。
因此,尽管System类不能被继承,但是它的静态成员(如out
)仍然可以被访问和使用,这就是为什么我们可以使用System.out
来进行输出的原因。静态成员并不属于任何类的实例,它们属于类本身,因此不受到final
修饰的影响。
下面是out
这个静态变量的源码解释:
1 | /** |
从上面的解释也可以看出,这是一个标准的输出流(打印流),是由Java虚拟机来实现和维护的,所以这个输出流的打开与关闭都不需要用户来控制,只需要调用这个方法来达到输出这个目的即可。
当然,想要关闭这个流也是可以的,跟其他流一样,调用close()
方法就可以关闭这个输出流资源,但是一旦关闭之后,后面的输出代码就不能被输出到控制台了。
打印的语句是由out
这个静态变量调用println
来实现打印到控制台的,println
方法是PrintStream
打印流的一个方法,特殊的是,打印流只有输出流,没有输入流,它还有一个兄弟字符打印流:PrintWriter
;两者的成员方法实现的功能都是类似的,主要的方法是:
1 | public void write() #写出字节或者字符串(写出到文件) |
以上就是打印流主要的成员方法,System.out
也可以调用这些方法来进行输出或者写出,其中比较特殊的是最后一个方法printf
, 可以用于格式化字符串,例如printf("%s爱上了%s%n","阿珍","阿强")
,输出的句子是 “阿珍爱上了阿强”,下面是一些常见的格式化占位符:
1 | %s:字符串占位符,用于插入字符串类型的值。 |
System.out.println()
这也是日常编程中最简单且常见的链式编程,常用于调试,因为它可以在控制台直接看到变量的值,或者用于输出程序运行中间的结果。 同时,当需要输出内容到控制台时,无论内容是否为空,System.out.println()
都会在最后自动换行,使输出内容更易读。
System类里面也提供了System.in
这个标准的输入流,当需要从控制台输入信息的时候,可以结合Scanner
这个类来使用。
本文链接: https://longzas.github.io/2023/08/16/%E5%AF%B9System.out.println()%E8%BF%99%E4%B8%AA%E6%89%93%E5%8D%B0%E8%AF%AD%E5%8F%A5%E7%9A%84%E8%AE%A4%E8%AF%86/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!