วิธีทำให้ System.out.println () สั้นลง


122

โปรดให้คำแนะนำว่าฉันจะหา lib ได้ที่ไหนเพื่อที่จะใช้นิพจน์ที่สั้นกว่าSystem.out.println()และฉันควรวาง lib นั้นไว้ที่ใด


2
คุณต้องการใช้สิ่งนี้เพียงเพราะนิพจน์สั้นลง?
Erick Robertson

61
หากคุณกำลังจะเพิ่มไลบรารีในโปรเจ็กต์ของคุณเพียงเพื่อย่อนิพจน์แสดงว่าคุณไม่ได้จัดลำดับความสำคัญ
Erick Robertson

7
กว่าที่คุณจะทำมันผิดเชื่อฉัน
PeterK

6
ฉันรู้สึกว่าสิ่งนี้ต้องการแท็ก code-golf
Mark Peters

3
การใช้ System.out โดยทั่วไปไม่ดีในแอปพลิเคชันที่ออกแบบมาอย่างดีดังนั้นคำตอบจึงไม่สำคัญจริงๆ ...
Bananeweizen

คำตอบ:


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แล้วกด+CTRLSPACE

อื่น ๆ

ค้นหาปลั๊กอิน "ตัวอย่างข้อมูล" สำหรับโปรแกรมแก้ไขข้อความ / IDE ที่คุณชื่นชอบ

การนำเข้าแบบคงที่

import static java.lang.System.out;

out.println("Hello World");

สำรวจภาษา JVM

สกาล่า

println("Hello, World!")

Groovy

println "Hello, World!" 

Jython

print "Hello, World!" 

JRuby

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

4
ใน Eclipse คุณสามารถเปลี่ยนsysoutแม่แบบในJava> Editor> แม่แบบ คุณยังสามารถทำให้มันสั้นมากขึ้นโดยการเปลี่ยนsysoutจากsoหรือดังนั้น :)
BalusC

3
@BalusC Better idea - soCTRL + SPACE เปิด Stack Overflow ในหน้าต่างเบราว์เซอร์และคุณหยุดการเข้ารหัส
Michael Mrozek

1
soutยังใช้งานได้ใน IntelliJ IDEA (NetBeans อาจคัดลอกมาจากพวกเขา :) อย่างไรก็ตามดีที่จะพูดถึงเรื่องนี้ - ความยาวSystem.out.println()จะไม่เกี่ยวข้องกับ IMHO
Jonik

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

ที่สั้นที่สุด ไปเลย


7
+1 เพียงเพราะมันน่าสนุกที่ได้เห็น Java ชนะโค้ดกอล์ฟสำหรับการเปลี่ยนแปลง ;-)
chimeracoder

จริงๆแล้วมันตรงกับ "Beginning Java Programming: The Object-Oriented Approach" ที่นี่wrox.com/WileyCDA/WroxTitle/…
uchuugaka

17

Java เป็นภาษา verbose

หากคุณอยู่เพียง 3 วันและสิ่งนี้กำลังรบกวนคุณอยู่แล้วคุณอาจจะควรเรียนภาษาอื่นเช่น Scala ดีกว่า:

scala> println("Hello World")
Hello World

ในแง่ที่เข้าใจง่ายสิ่งนี้จะถือว่าเป็นการใช้ "ไลบรารี" เพื่อเปิดใช้งานนิพจน์ที่สั้นกว่า;)


4
นี่เป็นปีที่ 5 ของฉันใน Java ฉันยังทันเวลาไหม
ทอม

2
แน่นอน! Scala มีเส้นโค้งการเรียนรู้ที่ค่อยเป็นค่อยไปสำหรับนักพัฒนาจาวา
dbyrne

ฉันติด Clojure
Peter

1
ถูกต้อง Java เป็นภาษา verbose; การถามตัวเองเช่น 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");

9

สำหรับประเภทIntellij IDEAsoutแล้วกดTabและกด

สำหรับคราสชนิดsysoและกด+CtrlSpace


2
คำตอบของคุณอาจขึ้นอยู่กับ IDE คุณอาจต้องการอธิบายว่าทางลัดนี้ทำงานที่ไหน มิฉะนั้นคำตอบของคุณจะไม่สามารถช่วยใครได้จริงๆ
ภาษาเริ่มต้น

1
@defaultlocale ขอบคุณ ใช่มันเป็นความจริง. ฉันได้เพิ่มข้อมูลบางอย่างแล้ว
Max Gabderakhmanov


2

ดังที่ Bakkal อธิบายสำหรับแป้นพิมพ์ลัดใน netbeansคุณสามารถไปที่ tools-> options-> editor-> code template และเพิ่มหรือแก้ไขทางลัดของคุณเองได้

ในEclipseเทมเพลต


1

วิธีแก้ปัญหาของฉันสำหรับBlueJคือแก้ไขเทมเพลต New Class "stdclass.tmpl" ใน Program Files (x86) \ BlueJ \ lib \ english \ template \ newclass และเพิ่มวิธีนี้:

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
แพ็คเกจ some.useful.methods;

สาธารณะชั้น B {

    โมฆะคงที่สาธารณะ p (Object s) {
        System.out.println (s);
    }
}
แพ็คเกจ first.java.lesson;

นำเข้าแบบคงที่ some.useful.methods.B. *;

ชั้นสาธารณะ A {

    โมฆะคงที่สาธารณะ main (String [] args) {

        P ( "Hello!");

    }
}


-1

การใช้ System.out.println () เป็นแนวทางปฏิบัติที่ไม่ดี (ควรใช้กรอบการบันทึกที่ดีกว่า) -> คุณไม่ควรมีเหตุการณ์มากมายในฐานรหัสของคุณ การใช้วิธีอื่นเพื่อทำให้สั้นลงดูเหมือนจะไม่ใช่ทางเลือกที่ดี


ฉันไม่เห็นด้วย หากคุณมีการเข้าสู่ระบบปกติอยู่แล้วการใช้ Sysout เป็นวิธีที่ดีกว่าในการแยกแยะระหว่างสิ่งที่คุณต้องเห็นในขณะนี้ นอกจากนี้การใช้ sysout นั้นเร็วกว่ามากและหากคุณทำการดีบักจำนวนมากทุกๆวินาทีจะมีค่า
breakline
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.