如何缩短 System.out.println() 的代码长度

127

请告知我在哪里可以找到该库,以便使用System.out.println()的简短表达方式,以及应将该库放置在何处。


61
如果你只是为了缩短一个表达式而将一个库添加到你的项目中,那么你的优先级就错了。 - Erick Robertson
7
如果你这样做,相信我,你是错误的。 - PeterK
6
我觉得这个需要添加code-golf标签。 - Mark Peters
3
在设计良好的应用程序中,通常不建议使用 System.out,因此答案并不重要。 - Bananeweizen
2
@ErickRobertson 五年过去了,我也能理解了 :) 这是我在SO上的第一个问题。时间飞逝! - Eugene
显示剩余4条评论
12个回答

320

日志库

您可以使用日志库而不是重新发明轮子。Log4j 例如提供了不同消息的方法,如info()warn()error()

自制方法

或者简单地创建一个自己的println方法并调用它:

void println(Object line) {
    System.out.println(line);
}

println("Hello World");

IDE键盘快捷键

IntelliJ IDEA和NetBeans:

输入sout,然后按TAB键,它会为您键入System.out.println(),光标停留在正确的位置。

Eclipse:

键入syso,然后按CTRL+SPACE

其他:

为您喜欢的文本编辑器/IDE查找一个“代码段”插件。

静态导入

import static java.lang.System.out;

out.println("Hello World");

探索JVM语言

Scala

println("Hello, World!")

Groovy

println "Hello, World!" 

Jython

print "Hello, World!" 

JRuby

puts "Hello, World!" 

Clojure

(println "Hello, World!")

Rhino

print('Hello, World!'); 

18
我认为,import static System.out;是一种很少见的做法,也非常不必要。因此,最初看到out.println可能会引起困惑。尽管静态导入有更惯用的用法,但这个特定情况并不是其中之一。 - polygenelubricants
12
支持Eclspe和Netbeans快捷键。我对静态导入还没有决定。 - David J. Liszewski
4
在Eclipse中,您可以在Java > 编辑器 > 模板中更改“sysout”模板。您甚至可以通过将“sysout”替换为“so”或其他方式使其更短 :) - BalusC
3
更好的主意——使用so快捷键组合打开浏览器窗口中的 Stack Overflow 网站,这样你就可以停止编码了。 - Michael Mrozek
1
@adarshr 不起作用是因为 out 是一个字段。你可以导入这个字段,但不能导入它上面的方法。 - Boann
显示剩余7条评论

28
void p(String l){
System.out.println(l);
}

最短的。去做吧。


8
+1,仅因为看到Java赢得代码高尔夫比赛而感到有趣。;-) - chimeracoder
实际上,这是从《Java编程入门:面向对象的方法》中直接摘录的,链接在此:http://www.wrox.com/WileyCDA/WroxTitle/Beginning-Java-Programming-The-Object-Oriented-Approach.productCd-1118739493,descCd-DOWNLOAD.html。 - uchuugaka

16

Java是一种冗长的语言。

如果你已经学了3天,这样的冗长让你感到困扰,也许学习一种不同的语言如Scala会更好:

scala> println("Hello World")
Hello World
在宽泛的意义上,这可以称为使用"库"来实现更短的表达方式 ;)

5
我已经学习Java 5年了,我还来得及吗? - Tom
2
当然可以!对于Java开发人员来说,Scala的学习曲线非常平缓。 - dbyrne
我沉迷于Clojure。 - Peter
1
没错,Java是一种冗长的语言;像OP这样问自己问题是了解它的正常过程。 - barfuin
7
我对Java上瘾。 - ceklock
显示剩余3条评论

15

一些有趣的替代方案:

选项1

PrintStream p = System.out;
p.println("hello");

选择2

PrintWriter p = new PrintWriter(System.out, true);
p.println("Hello");

11

Intellij IDEA 中,输入 sout 并按下 Tab 键。

Eclipse 中,输入 syso 并按下 Ctrl+Space 键。


2
你的答案可能取决于集成开发环境(IDE)。你可能需要解释这个快捷键在哪里起作用。否则,你的答案实际上并没有帮助任何人。 - default locale
1
@defaultlocale 谢谢。是的,没错。我添加了一些具体信息。 - Max Gabderakhmanov

7
使用log4j或者JDK logging,你可以在类中直接创建一个静态logger并且像下面这样调用它:
LOG.info("foo")

3

在Java 8中:

    List<String> players = new ArrayList<>();
     players.forEach(System.out::println);

2
如Bakkal所解释的那样,在键盘快捷键方面,您可以在netbeans中转到工具->选项->编辑器->代码模板并添加或编辑自己的快捷键。 在Eclipse中,它是在模板上。

1
一个小细节,也许不太重要:

import static System.out;

public class Tester
{
    public static void main(String[] args)
    {
        out.println("Hello!"); 
    }
}

...生成了编译时错误。我通过编辑第一行来纠正了错误:

import static java.lang.System.out;

1

对于BlueJ,我的解决方法是编辑"Program Files (x86)\BlueJ\lib\english\templates\newclass"中的新类模板"stdclass.tmpl"并添加此方法:

public static <T> void p(T s)
{
    System.out.println(s);
}

或者这个版本:
public static void p(Object s)
{
    System.out.println(s);
}

关于Eclipse,我正在使用建议的快捷方式 syso + <Ctrl> + <Space> :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接