Setelah dua chapter membaca input, kini kita berbalik ke arah yang lebih sering kita pakai: menampilkan hasil. Hampir setiap program Java kecil berkomunikasi lewat terminal, dan seluruh komunikasi tersebut mengalir melalui satu pintu bernama System.out. Chapter ini membahas perbedaan print dan println, escape sequence yang membuat satu baris teks dapat memuat tab, tanda kutip, hingga karakter Unicode, serta cara merapikan output sederhana — bekal yang dibutuhkan sebelum melangkah ke materi pemformatan pada chapter berikutnya.
System.out sebagai PrintStream #
System.out adalah field statis di class System yang bertipe java.io.PrintStream — sebuah stream keluaran siap pakai yang terhubung ke terminal. Dari object inilah kita memanggil method print() dan println(), masing-masing dengan banyak overload: versi untuk String, int, double, char, boolean, hingga Object umum. Versi Object memanggil String.valueOf() sehingga hasil toString() object tercetak otomatis; itulah sebabnya angka dan object dapat langsung dilempar ke println tanpa konversi manual.
Dua perilaku PrintStream layak dicatat. Pertama, method keluaran ini tidak melempar IOException — kegagalan penulisan ditelan dan hanya bisa diperiksa lewat checkError(), sehingga kode cetak kita tidak perlu blok try-catch. Kedua, Java menyediakan System.err sebagai stream kedua yang diperuntukkan bagi pesan galat; keduanya berujung ke terminal, tetapi System.err tidak disangga sehingga pesan galat muncul sesegera mungkin.
print Menempel, println Berpindah Baris #
Perbedaan kedua method utama ini sederhana namun mendasar: print() menulis teks lalu berhenti di posisi yang sama, sedangkan println() menambahkan tanda baris baru setelah teks. Program kecil berikut memperlihatkan keduanya secara berdampingan:
public class PrintVsPrintln {
public static void main(String[] args) {
System.out.print("Halo, ");
System.out.print("Budi");
System.out.println("!");
System.out.println("Baris baru dimulai dari sini.");
System.out.println();
System.out.println("println() tanpa argumen menghasilkan baris kosong.");
}
}Output yang Dihasilkan:
Halo, Budi!
Baris baru dimulai dari sini.
println() tanpa argumen menghasilkan baris kosong.Tiga panggilan print dan println pada baris 3-5 menghasilkan satu baris utuh "Halo, Budi!" karena tidak ada satu pun yang memindahkan posisi cetak sebelum println("!") menutupnya. Baris 8 memperlihatkan bentuk khusus println() tanpa argumen: method tersebut hanya mencetak tanda baris baru, praktis untuk menyisipkan baris kosong pemisah.
Escape Sequence dalam String #
String di Java dibatasi tanda kutip ganda, sehingga pertanyaan muncul: bagaimana mencetak tanda kutip itu sendiri, atau memindah baris di tengah string? Jawabannya adalah escape sequence — kombinasi backslash dan satu karakter yang compiler terjemahkan menjadi karakter khusus saat mengompilasi string:
| Urutan | Arti | Hasil di layar |
|---|---|---|
\n | line feed | pindah ke baris baru |
\t | tab | lompat ke kolom tab berikutnya |
\r | carriage return | kursor kembali ke awal baris |
\\ | backslash | satu karakter \ |
\" | tanda kutip ganda | satu karakter " |
\' | tanda kutip tunggal | satu karakter ' |
\uXXXX | escape Unicode | karakter sesuai kode heksadesimal |
Program berikut menguji urutan yang paling sering dipakai:
public class EscapeSequence {
public static void main(String[] args) {
System.out.println("Baris pertama\nbaris kedua");
System.out.println("Nama\tUmur\tKota");
System.out.println("Budi\t17\tBandung");
System.out.println("Path Java: C:\\tools\\jdk");
System.out.println("Kata \"Java\" berada di dalam tanda kutip");
System.out.println("Huruf dari escape unicode: \u0041\u0042\u0043");
}
}Output yang Dihasilkan:
Baris pertama
baris kedua
Nama Umur Kota
Budi 17 Bandung
Path Java: C:\tools\jdk
Kata "Java" berada di dalam tanda kutip
Huruf dari escape unicode: ABCMari kita telaah tiap barisnya:
- Baris 3 (
\n): satu string terbelah menjadi dua baris output — tanda baris baru disisipkan tepat di posisi\n. - Baris 4-5 (
\t): tab melompat ke kolom tab berikutnya; karena panjang teks “Nama” dan “Budi” sama-sama di bawah lebar satu kolom tab, kedua baris tampak sejajar. - Baris 6 (urutan
\\): backslash harus ditulis ganda agar tidak dianggap awal escape sequence, sehingga path WindowsC:\tools\jdkdi layar membutuhkan penulisanC:\\tools\\jdkdi dalam string. - Baris 7 (
\"): tanda kutip ganda dapat hadir di dalam string tanpa menutup string itu sendiri. - Baris 8 (
\u0041dst.): kode heksadesimal41,42,43dipetakan menjadi hurufA,B,C.
Merapikan Output Sederhana dengan Tab #
Gabungan print, println, dan \t sudah cukup untuk struk belanja sederhana. Program berikut juga memperlihatkan bahwa println menerima hasil ekspresi aritmetika — nilainya dihitung lebih dulu, lalu dikonversi menjadi teks:
public class TabelBelanja {
public static void main(String[] args) {
System.out.println("Item\tQty\tHarga");
System.out.println("Buku\t2\t15000");
System.out.println("Pena\t5\t3000");
System.out.println("Penggaris\t1\t7500");
System.out.println("-------------------------");
System.out.print("Total: ");
System.out.println(2 * 15000 + 5 * 3000 + 7500);
}
}Output yang Dihasilkan:
Item Qty Harga
Buku 2 15000
Pena 5 3000
Penggaris 1 7500
-------------------------
Total: 52500Kolom “Harga” pada baris “Penggaris” tidak sejajar dengan baris lainnya karena nama item tersebut lebih panjang dari lebar satu kolom tab — tab hanya melompat antar penanda kolom tetap, bukan menghitung lebar teks. Ketika ketidaksejajaran seperti ini mulai mengganggu, kita butuh alat yang lebih presisi: pemformatan dengan lebar kolom dan presisi desimal. Chapter berikutnya, String Formatting, memperkenalkan String.format sebagai fondasinya.
Referensi #
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
EscapeSequence.java
Unduh berkaspublic class EscapeSequence {
public static void main(String[] args) {
System.out.println("Baris pertama\nbaris kedua");
System.out.println("Nama\tUmur\tKota");
System.out.println("Budi\t17\tBandung");
System.out.println("Path Java: C:\\tools\\jdk");
System.out.println("Kata \"Java\" berada di dalam tanda kutip");
System.out.println("Huruf dari escape unicode: \u0041\u0042\u0043");
}
}
PrintVsPrintln.java
Unduh berkaspublic class PrintVsPrintln {
public static void main(String[] args) {
System.out.print("Halo, ");
System.out.print("Budi");
System.out.println("!");
System.out.println("Baris baru dimulai dari sini.");
System.out.println();
System.out.println("println() tanpa argumen menghasilkan baris kosong.");
}
}
TabelBelanja.java
Unduh berkaspublic class TabelBelanja {
public static void main(String[] args) {
System.out.println("Item\tQty\tHarga");
System.out.println("Buku\t2\t15000");
System.out.println("Pena\t5\t3000");
System.out.println("Penggaris\t1\t7500");
System.out.println("-------------------------");
System.out.print("Total: ");
System.out.println(2 * 15000 + 5 * 3000 + 7500);
}
}