Przez jakiś czas programowałem w Javie, ale wciąż mam kilka palących pytań na temat podstaw. Słyszałem, że powinienem używać System.out.println() do wyświetlania danych od niektórych osób, a inni dali mi różne pomysły (takie jak PrintStream lub coś innego). Jaki jest najlepszy sposób drukowania na konsoli w Javie?Czy powinienem używać System.out.println() lub czegoś innego?
Odpowiedz
System.out
jest a PrintStream.
Jeśli Twoim głównym celem jest interakcja z konsolą, spójrz na java.io.Console
. Jeśli Twoim głównym celem jest posiadanie pewnego rodzaju rejestrowania, użyj struktury rejestrowania, takiej jak Java Logging API lub log4j.
Jeśli dopiero zaczynasz i chcesz wydrukować niektóre ciągi na konsolę, system.out.println() będzie w porządku. Pozbądź się podstaw, a następnie zanurkuj w najlepsze punkty Java I/O.
Rodzaj zależy od tego, co robisz. Niemal zawsze sugerowałbym używanie interfejsu API do rejestrowania Java (java.util.logging). System.out.println jest bardziej "narzędziem do debugowania", ale nawet wtedy masz znacznie większą kontrolę nad danymi wyjściowymi za pomocą interfejsu API rejestrowania JDK ...
Użyj log4j i bezpośredniego wyjścia na standardowe wyjście. Łatwo jest wtedy przełączyć się na logi według potrzeb.
Korzystanie z bezpośrednio jest najprostszym i zwykle najskuteczniejszym sposobem. Jeśli masz dużo do wydrukowania, możesz zbadać, używając BufferedOutputStream
.
Istnieje kilka korzyści, które można uzyskać, tworząc łańcuchy, które będą drukowane bardziej efektywnie. Jeśli jest dużo łączenia, zajrzyj do StringBuilder
.
System.out nadaje się do drukowania na konsoli. Jednak okazało się, że podejmowanie wysiłku, aby użyć java.util.logging zamiast tego był lepszym wyborem dla mnie. (Albo jakiś system rejestrowania.)
To zależy od informacji, które próbujesz wyświetlić. Jeśli chodzi o interakcję z konsolą, System.out jest doskonały. Jeśli ma wyświetlać informacje z debugowania, logowanie jest prawdopodobnie drogą do wykonania, ponieważ pozwala mieć znacznie większą kontrolę nad rzeczami, jeśli tego pragniesz.
(Po wstępnej konfiguracji, programy narzędziowe rejestrowania są prawie tak przejrzysty jak przy użyciu System.out.)
yu można ustawić
System.setOut (nowy PrintStream („all-my-sysouts -go-w-tym-plik.txt”);
a następnie zrobić sysoyts ...
yu mogą śledzić je za pomocą baretail ...
nadziei to pomaga ..
raj.
będę sugerować użycie Java API rejestrowania
Tak, to najprostszy i skuteczny sposób, aby drukować na konsoli jest zwykle System.out.print() i System.out.println(), ale jeśli masz duża ilość danych wyjściowych do wysłania, System.out.println() może być nieefektywna, ponieważ jest buforowana liniowo i wykonuje wiele pracy związanych z obsługą Unicode. Ze względu na mały rozmiar bufora, System.out.println() nie jest dobrze przystosowany do obsługi wielu powtarzalnych wyjść w trybie wsadowym. Każda linia jest przepłukiwana od razu. W takim przypadku możesz użyć BufferedOutputStream lub BufferedWriter.
Należy pamiętać, że System.out nie zawsze przechodzi do konsoli aplikacji lub terminala. System.out wskazuje na standardowy kanał wyjściowy aplikacji; w C/C++ nazywa się stdout. To może przejść do konsoli, ale może również nastąpić w dowolnym miejscu, w którym użytkownik zdecyduje się go wysłać. Na przykład plik to wszystko wydrukowane na System.out trafi do pliku my-app-output.txt.
Tak więc, jeśli chcesz wysłać normalne wyniki, użyj System.out. Jeśli chcesz wysłać komunikat o błędzie lub powiadomienie użytkownika, z wielką szansą wejścia na konsolę, użyj System.err.print() i System.err.println().
Nie ma przenośnego sposobu na uzyskanie kanału "prawdziwej" konsoli w wersjach Java przed 1.6. W wersji 1.6 istnieje klasa obiektu specjalnie dla reprezentowania konsoli: java.io.Console. Numer referencyjny dla tego unikalnego obiektu można uzyskać z klasy System za pomocą konsoli metody statycznej().
Ale jeśli Twoim wymaganiem jest debugowanie całej aplikacji, to najlepszym rozwiązaniem jest to, co wszyscy mówili przy użyciu rejestratorów.
- 1. Czy należy używać rozszerzeń SIMD lub wektorowych lub czegoś innego?
- 2. Dlaczego nie powinienem używać System.out.println() w Androidzie
- 3. Czy powinienem używać odbiornika lub obserwatora?
- 4. czy powinienem używać urandom lub openssl_random_pseudo_bytes?
- 5. Czy powinienem używać nav lub ul
- 6. Czy powinienem używać dziedziczenia lub kompozycji?
- 7. Czy powinienem używać tutaj awakeFromNib lub initWithCoder?
- 8. Java: Czy powinienem używać float lub Float?
- 9. Czy powinienem używać tsd lub typowania?
- 10. Czy powinienem używać libC++ lub libstdC++?
- 11. Czy powinienem używać rand() lub rand_s()?
- 12. Czy mogę hostować Mavena na serwerze FTP, czy też powinienem użyć czegoś innego?
- 13. Aplikacja Windows Store: Czy powinienem używać ListBox lub ListView?
- 14. Czy powinienem używać czcionek typograficznych?
- 15. Właściwe użycie RxSwift do żądania łańcuchów, flatMap lub czegoś innego?
- 16. WEBrick: RequestURITooDuży: czy powinienem zaktualizować lub użyć innego serwera?
- 17. Czy powinienem używać Linq To SQL bezpośrednio w kodzie z tyłu lub użyć innego podejścia?
- 18. Czy powinienem używać MSMQ lub SQL Service Broker dla transakcji?
- 19. Django ModelChoiceField - użyj czegoś innego niż id?
- 20. Obsługa usługi RESTful - czy należy używać Pragma, plików cookie, niestandardowego nagłówka lub czegoś innego do identyfikowania sesji i transakcji klientów?
- 21. Czy powinienem używać Universal-ctags?
- 22. Czy powinienem używać takiego constexpr?
- 23. Dlaczego powinienem lub nie powinienem używać API camera2 w Androidzie?
- 24. Numpy: Czy powinienem używać newaxis czy None?
- 25. Czy powinienem używać funkcji php mail lub phpmailer?
- 26. Czy powinienem używać klasy deskryptorów lub fabryki nieruchomości?
- 27. Czy powinienem używać has_one lub belongs_to w ruby na szynach?
- 28. Czy powinienem używać zwinięcia LWP lub lib Perla?
- 29. Czy powinienem używać materiału dla kątowego lub materiału dla AngularJS?
- 30. Czy powinienem używać obiektów Entity Framework, DataSet lub Custom?
Może napisali biblioteki Java I/O: P – wshato