簡體   English   中英

這兩個java語句有什么區別?

[英]What is the difference between these two java statements?

我最近一直在學習Java編程,這兩個語句之間我很困惑。

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

我知道outSystem類的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM