我一直在尋找到JDK9和我注意到,在jshell你沒有前綴的printf()與System.out.printf()即你可以寫的printf(「測試」)但你不能寫的println( 「測試」)JDK 9 jshell printf()特殊處理?
這只是jshell的功能嗎?如何在應用程序中實現相同的行爲?
以下是最接近:
import static java.lang.System.out ;
out.println("test");
out.printf("test");
我一直在尋找到JDK9和我注意到,在jshell你沒有前綴的printf()與System.out.printf()即你可以寫的printf(「測試」)但你不能寫的println( 「測試」)JDK 9 jshell printf()特殊處理?
這只是jshell的功能嗎?如何在應用程序中實現相同的行爲?
以下是最接近:
import static java.lang.System.out ;
out.println("test");
out.printf("test");
本品系貌似printf
是JShell命令,但println
不是(就像在bash shell中)。 System.out
使用的printf()
方法與jshell使用的方法不同,因此不能在java應用程序中靜態導入。
來源:
http://jakubdziworski.github.io/java/2016/07/31/jshell-getting-started-examples.html https://jshelltutorial.com/jshells-printf-method/
在早期版本的早期訪問有是重定向到System.out.printf預定的printf方法。這有兩個問題:它不是標準的Java,正如在其他答案中指出的那樣,print和println沒有定義是不一致的。
在當前的早期訪問和將要發佈的內容中,沒有自動定義的打印方法。如果你想要這個,請啓動jshell:
jshell --start DEFAULT --start PRINTING
這會給你一整套打印方法。
要回答問題的第二部分,可以通過在啓動後使用/ method命令來查看重定向方法的定義,如上所述。將這些添加到一個類會讓你獲得訪問權 - 但這很醜陋。或者,你可以在一個類中使它們成爲公共的靜態方法,並導入它們。
有關記錄,'printf' [已刪除](https://stackoverflow.com/a/43864201/6730571) –
不支持java的創新步伐以及在語言的很多領域做出的決策打印是一個基本的和重要的功能,我不明白爲什麼他們從殼的默認導入 – firephil