如何使System.out.println()更短


122

请提供有关在哪里可以找到lib的建议,以便使用的简短表达,System.out.println()以及在哪里放置该lib。


2
您只想因为表达式较短而使用它吗?
埃里克·罗伯逊

61
如果您打算将一个库添加到您的项目中只是为了缩短表达式,那么您的优先级就会乱七八糟。
艾里克·罗伯逊

7
比您做错了,请相信我。
PeterK'7

6
我觉得这需要代码高尔夫球标记。
马克·彼得斯

3
在一个设计良好的应用程序中,使用System.out通常是不好的,因此答案并不重要……
Bananeweizen 2012年

Answers:


310

记录库

您可以使用日志记录库,而不是重新发明轮子。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()为您键入,将光标放在正确的位置。

蚀:

输入,syso然后按CTRL+ SPACE

其他

查找最喜欢的文本编辑器/ IDE的“片段”插件

静态导入

import static java.lang.System.out;

out.println("Hello World");

探索JVM语言

斯卡拉

println("Hello, World!")

Groovy

println "Hello, World!" 

吉顿

print "Hello, World!" 

红宝石

puts "Hello, World!" 

Clojure

(println "Hello, World!")

犀牛

print('Hello, World!'); 

18
import static System.out;这是一种罕见的做法,在我看来,这是完全不必要的,因此out.println,至少从一开始,看到就可能引起混乱。静态导入具有更多惯用用法,但不是这种情况。
polygenelubricants

11
+1为Eclspe和Netbeans快捷方式。我不确定静态导入。
David J. Liszewski 2010年

4
在Eclipse中,您可以sysoutJava>编辑器>模板中更改模板。你甚至可以使它更短的更换sysoutso左右:)
BalusC

3
@BalusC更好的主意-CTRL so+ SPACE在浏览器窗口中打开堆栈溢出,您停止编码
Michael Mrozek 2010年

1
sout也可以在IntelliJ IDEA中使用(NetBeans可能是从它们复制过来的:)无论如何,值得一提的是– System.out.println()IMHO 的长度与它无关。
Jonik 2010年


17

Java是一种冗长的语言。

如果您只有3天的时间,而这已经困扰您了,也许您最好学习像Scala这样的其他语言:

scala> println("Hello World")
Hello World

从广义上讲,这相当于使用“库”来启用较短的表达式;)


4
这是我在Java的第五年,我还准时吗?
汤姆(Tom)2010年

2
绝对!对于Java开发人员而言,Scala的学习曲线非常缓慢。
dbyrne

我沉迷于Clojure
Peter

1
是的,Java是一种冗长的语言。向自己询问诸如OP之类的问题是了解它的正常部分。
barfuin

6
我沉迷于Java。
ceklock

14

一些有趣的选择:

选项1

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

选项2

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


7

使用log4j或JDK日志记录,这样您就可以在类中创建一个静态记录器并按如下方式调用它:

LOG.info("foo")

2

如Bakkal所述,对于键盘快捷键,netbeans您可以进入工具->选项->编辑器->代码模板并添加或编辑自己的快捷键。

Eclipse模板上。


1

我对BlueJ的解决方案是在程序文件(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>:)


1

可能是次要的一点,但是:

import static System.out;

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

...产生了编译时错误。我通过将第一行编辑为以下内容来纠正错误:

import static java.lang.System.out;

1
打包一些有用的方法

公众B级{

    公共静态无效p(Object s){
        System.out.println(s);
    }
}
打包first.java.lesson;

导入静态的some.useful.methods.B。*;

公开课A {

    公共静态void main(String [] args){

        p(“ Hello!”);

    }
}

0

在Java 8中:

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

-1

使用System.out.println()是一种不好的做法(最好使用日志记录框架)->您的代码库中不应出现过多的情况。使用另一种方法来简单地缩短它似乎不是一个好选择。


我不同意。如果您已经有正常的日志记录,那么使用Sysout是区分当前需要查看的更好的方法。而且,使用sysout的速度要快得多,如果您每秒进行大量调试,则非常重要。
突破线
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.