这两个Java语句有什么区别?

时间:2019-02-13 14:33:23

标签: java oop

我最近一直在学习Java编程,这两个语句之间我很困惑。

System.out.println("Hello, world");
System.console().printf("Hello, world");

我知道out static 类的System变量,而printf()Printstream类的方法。

但是我没有得到第二个陈述。我了解一点OOP。因此,如果 System 类具有类似console()的方法,那么该方法如何具有类似printf()的方法呢?

5 个答案:

答案 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本身。