[英]What is the difference between these two java statements?
我最近一直在學習Java編程,這兩個語句之間我很困惑。
System.out.println("Hello, world");
System.console().printf("Hello, world");
我知道out
是System
類的static
變量,而printf()
是Printstream
類的方法。
但是我沒有得到第二個陳述。 我了解一點OOP。 因此,如果System
類具有類似console()
的方法,那么一個方法如何具有諸如printf()
方法呢?
console()
方法沒有類似printf()
的方法,它返回一個具有printf()
方法的對象 。 具體來說, console()
方法返回一個Console
對象。
這種模式稱為方法鏈接 。
因此,如果
System
類具有類似console()
的方法,那么一個方法如何具有諸如printf()
方法呢?
System.console()
返回一個Console
對象,並且您正在對該Console
對象調用printf()
方法。
console()
方法返回Console
對象的實例。
您可以這樣重寫它:
Console console = System.console();
console.printf("Hello, world");
有關更多詳細信息,請參見https://docs.oracle.com/javase/7/docs/api/java/io/Console.html
從系統javadoc:
安慰()
返回與當前Java虛擬機關聯的唯一Console對象(如果有)。
所以console()方法返回Console對象,而printf()
是Console類的方法
另一方面, System.out.println()
在類System的靜態PrintStream字段“ out”上調用println()
方法
Java語句和方法調用從左到右評估。 系統具有方法console() ,該方法授予對與JVM相關聯的控制台的訪問權限。 現在,當您調用方法printf()時,正在處理表示JVM控制台的對象。 printf()是JVM控制台的一種方法,而不是System本身。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.