System.out.println () nasıl kısaltılır


122

Lütfen kitaplığın daha kısa ifadesini kullanmak için kitaplığı nerede bulabilirim ve bu kitaplığı System.out.println()nereye yerleştirmem gerektiği konusunda tavsiye verin.


2
Bunu sadece ifade daha kısa olduğu için mi kullanmak istiyorsunuz?
Erick Robertson

61
Sadece bir ifadeyi kısaltmak için projenize bir kitaplık ekleyecekseniz, önceliklerinizi sıra dışı almışsınızdır.
Erick Robertson

7
Yanlış yaptığına göre güven bana.
PeterK

6
Bunun golf koduna ihtiyacı varmış gibi hissediyorum.
Mark Peters

3
System.out'u kullanmak, iyi tasarlanmış bir uygulamada genellikle kötüdür, bu nedenle cevapların önemi yoktur ...
Bananeweizen

Yanıtlar:


310

Kitaplıkları günlüğe kaydetme

Tekerleği yeniden icat etmek yerine günlük kitaplıklarını kullanabilirsiniz. Örneğin Log4jinfo() , warn()ve gibi farklı mesajlar için yöntemler sağlayacaktır error().

Ev yapımı yöntemler

veya basitçe printlnkendi yönteminizi yapın ve onu adlandırın:

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

println("Hello World");

IDE klavye kısayolları

IntelliJ IDEA ve NetBeans:

yazarsınız soutsonra tuşuna basın TABve System.out.println()imleç doğru yerde olacak şekilde sizin için yazar.

Eclipse:

Yazıp + sysotuşuna basın .CTRLSPACE

Diğer

Favori metin düzenleyiciniz / IDE için bir "parçacık" eklentisi bulun

Statik İçe Aktarma

import static java.lang.System.out;

out.println("Hello World");

JVM dillerini keşfedin

Scala

println("Hello, World!")

harika

println "Hello, World!" 

Jython

print "Hello, World!" 

JRuby

puts "Hello, World!" 

Clojure

(println "Hello, World!")

Gergedan

print('Hello, World!'); 

18
import static System.out;nadir görülen bir uygulamadır ve bence oldukça gereksizdir ve bu nedenle görmek out.printlnen azından başlangıçta kafa karışıklığına neden olabilir. Statik içe aktarmanın daha deyimsel kullanımı vardır, ancak bu özel durum öyle değil.
poligenel yağlayıcılar

11
Eclspe ve Netbeans kısayolları için +1. Statik içe aktarma konusunda kararsızım.
David J. Liszewski

4
Eclipse'de sysoutşablonu Java> Düzenleyici> Şablonlar'da değiştirebilirsiniz . Sen değiştirerek daha kısa hale bile olabilir sysouttarafından so:) ya da öylesine
BalusC

3
@BalusC Daha İyi fikir - soCTRL + BOŞLUK bir tarayıcı penceresinde Yığın taşması açılır ve kodlama durdurmak
Michael Mrozek

1
soutIntelliJ IDEA'da da çalışıyor (NetBeans muhtemelen onlardan kopyaladı :) Her neyse, bunu belirtmek güzel - uzunluğu System.out.println()onunla alakasız hale geliyor IMHO.
Jonik

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

En kısa. Göreyim seni.


7
+1, sırf Java'nın bir değişiklik için kod golfü kazanmasını görmek eğlenceli olduğu için. ;-)
chimeracoder

Aslında düz dışarı "Başlangıç Java Programlama: Nesne Tabanlı Yaklaşım" Burada wrox.com/WileyCDA/WroxTitle/...
uchuugaka

17

Java, ayrıntılı bir dildir.

Sadece 3 gün içerisindeyseniz ve bu zaten sizi rahatsız ediyorsa, belki Scala gibi farklı bir dil öğrenmeniz daha iyi olur:

scala> println("Hello World")
Hello World

Geniş anlamda, bu, daha kısa ifadeleri etkinleştirmek için bir "kitaplık" kullanmak olarak nitelendirilir;)


4
Bu Java'daki 5. yılım, hala zamanında mıyım?
Tom

2
Kesinlikle! Scala, java geliştiricileri için çok aşamalı bir öğrenme eğrisine sahiptir.
dbyrne

Clojure bağımlısıyım
Peter

1
Doğru, Java ayrıntılı bir dildir; kendinize OP gibi sorular sormak, onu tanımanın normal bir parçasıdır.
barfuin

6
Java bağımlısıyım.
ceklock

14

Bazı ilginç alternatifler:

SEÇENEK 1

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

SEÇENEK 2

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

9

İçin Intellij IDEA tipi soutve basın Tab.

For Eclipse tipi sysove basın Ctrl+ Space.


2
Cevabınız muhtemelen bir IDE'ye bağlıdır. Bu kısayolun tam olarak nerede çalıştığını açıklamak isteyebilirsiniz. Aksi takdirde cevabınız gerçekten kimseye yardımcı olmaz.
varsayılan yerel ayar

1
@defaultlocale Teşekkürler. Evet bu doğru. Bazı özel bilgiler ekledim.
Max Gabderakhmanov

7

Log4j veya JDK günlük kaydını kullanın, böylece sınıfta sadece bir statik kaydedici oluşturabilir ve bunu şu şekilde çağırabilirsiniz:

LOG.info("foo")

2

Bakkal'ın açıkladığı gibi, klavye kısayolları için, netbeansaraçlar-> seçenekler-> düzenleyici-> kod şablonlarına gidebilir ve kendi kısayollarınızı ekleyebilir veya düzenleyebilirsiniz.

İçinde Eclipseşablonlarda.


1

Benim çözüm BlueJ düzenlemek için Program Files Yeni Sınıf şablonu "stdclass.tmpl" dir (x86) \ BlueJ \ lib \ ingilizce \ şablonları \ newclass ve bu yöntemi ekleyin:

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

Veya bu diğer versiyon:

public static void p(Object s)
{
    System.out.println(s);
}

Eclipse için önerilen kısayolu kullanıyorum syso + <Ctrl> + <Space>:)


1

Belki küçük bir nokta, ama:

import static System.out;

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

... bir derleme zamanı hatası üretti. Okumak için ilk satırı düzenleyerek hatayı düzelttim:

import static java.lang.System.out;

1
some.useful.methods paketleyin;

public class B {

    public static void p (Nesneler) {
        System.out.println (s);
    }
}
paket first.java.lesson;

içe aktar statik bazı.useful.methods.B. *;

public class A {

    public static void main (String [] args) {

        p ( "Merhaba!");

    }
}

0

Java 8'de:

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

-1

System.out.println () kullanmak kötü bir uygulamadır (günlük çerçevesini daha iyi kullanın) -> kod tabanınızda çok fazla oluşum olmamalıdır. Kısaltmak için başka bir yöntem kullanmak iyi bir seçenek gibi görünmüyor.


Katılmıyorum. Halihazırda normal oturum açmanız varsa, Sysout'u kullanmak o anda görmeniz gerekenleri ayırt etmenin daha iyi bir yoludur. Ayrıca, sysout kullanmak çok daha hızlıdır ve çok fazla hata ayıklama yaparsanız, her saniye önemlidir.
2016
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.