我一直在寻找到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