我最近一直在学习Java编程,这两个语句之间我很困惑。
System.out.println("Hello, world");
System.console().printf("Hello, world");
我知道out
是 static
类的System
变量,而printf()
是Printstream
类的方法。
但是我没有得到第二个陈述。我了解一点OOP。因此,如果 System
类具有类似console()
的方法,那么该方法如何具有类似printf()
的方法呢?
答案 0 :(得分:3)
console()
方法没有像printf()
这样的方法,它返回具有printf()
方法的对象。具体来说,console()
method返回一个Console
对象。
此模式称为method chaining。
答案 1 :(得分:3)
因此,如果
System
类具有类似console()
的方法,那么一个方法如何具有类似printf()
的方法呢?
System.console()
返回一个Console
对象,并且您正在对该printf()
对象调用Console
方法。
答案 2 :(得分:2)
console()
方法返回Console
对象的实例。
您可以这样重写它:
Console console = System.console();
console.printf("Hello, world");
有关更多详细信息,请参见https://docs.oracle.com/javase/7/docs/api/java/io/Console.html
答案 3 :(得分:1)
来自系统javadoc:
console()
返回与以下内容关联的唯一控制台对象 当前的Java虚拟机(如果有)。
因此,console()方法返回一个Console对象,而printf()
是Console类的方法
System.out.println()
在类System的静态PrintStream字段“ out”上调用println()
方法
答案 4 :(得分:1)
Java语句和方法调用从左到右进行评估。系统具有方法console(),该方法授予对与JVM相关联的控制台的访问权限。现在,当您调用方法printf()时,正在处理表示JVM控制台的对象。 printf()是JVM控制台的一种方法,而不是System本身。