[{"data":1,"prerenderedAt":208},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-sistem-output-pada-bahasa-java-with-latest":41},{"navigations":4},[5,20],{"collection":6,"item":7},"series",{"__typename":6,"title":8,"slug":9,"children_series":10},"Artikel","all",[11,14,17],{"title":12,"slug":13},"Algoritma dan Struktur Data","algoritma-struktur-data",{"title":15,"slug":16},"Konsep Dasar Pemrograman","konsep-dasar-pemrograman",{"title":18,"slug":19},"Kecerdasan Artifisial","kecerdasan-artifisial",{"collection":6,"item":21},{"__typename":6,"title":22,"slug":23,"children_series":24},"Tutorial","tutorial",[25,28,31,34],{"title":26,"slug":27},"Belajar Java","belajar-java",{"title":29,"slug":30},"Belajar Pascal","belajar-pascal",{"title":32,"slug":33},"Belajar Python","belajar-python",{"title":35,"slug":36},"Belajar Golang","belajar-golang",{"name":38,"url":39,"show":40},"CC BY-SA","https://creativecommons.org/licenses/by-sa/4.0/",false,{"article":42,"renderedBody":136,"renderedTakeaway":137,"latestArticles":138,"toc":190},{"id":43,"title":44,"slug":45,"excerpt":46,"published_at":47,"thumbnail_image":48,"tags":50,"reading_time":54,"takeway":55,"body":56,"authors":57,"series":63},"53","Sistem Output pada Bahasa Java","sistem-output-pada-bahasa-java","Ketika membuat program \"Hello World\" kita sudah melihat method `System.out.println`. Selain method tersebut masih ada method lainnya, mari kita bahas.","2022-08-23T00:00:00.000Z",{"id":49},"acd35b05-1d92-4944-a89a-d2e5b352f3be",[51,52,53],"java","input-output","dasar",5,null,"Pada kesempatan kali ini kita akan membahas tentang cara menampilkan tulisan di layar konsol dengan bahasa Java.\n\nKita sudah melihat method `System.out.println` pada [program \"Hello World\"](/p/membuat-program-hello-world-pada-java), method ini adalah satu dari beberapa cara untuk mencetak sesuatu di layar konsol, atau yang kita sebut sebagai sistem output.\n\nSelain method ini sebenarnya masih ada cara lainnya. Secara umum terdapat 3 method untuk menampilkan output pada Java yaitu:\n\n* **`System.out.print`** — Mencetak tanpa pindah baris\n* **`System.out.println`** — Mencetak dengan pindah baris\n* **`System.out.printf`** — Mencetak dengan format tertentu\n\nMari kita bahas lebih lanjut..\n\n## Sistem Output dengan `System.out.print` dan `System.out.println`\n\nKarena mirip, kita bahas 2 method ini sekaligus saja.\n\nBaik `System.out.print` maupun `System.out.println` memiliki fungsi yang sama, yaitu mencetak apapun yang dimasukkan sebagai argumen ke layar konsol atau standard output.\n\nBedanya adalah, `System.out.print` akan **mencetak ke kanan**, sedangkan `System.out.println` **mencetak ke bawah** (ganti baris / *print line*).\n\nBiar jelas, kita coba langsung koding saja.\n\n```java\npublic class SistemOutput{\n  public static void main(String[] args) {\n    // output 4 baris pertama menggunakan println\n    System.out.println(\"Dengan System.out.println: \");\n    System.out.println(\"satu,\");\n    System.out.println(\"dua,\");\n    System.out.println(\"tiga.\");\n    \n    // baris selanjutnya kita gunakan print\n    System.out.print(\"Dengan System.out.print: \");\n    System.out.print(\"empat,\");\n    System.out.print(\"lima,\");\n    System.out.print(\"enam.\");\n  }\n}\n```\n\nSekarang coba kita jalankan, maka kurang lebih hasilnya akan seperti ini:\n\n```\nDengan System.out.println: \nsatu,\ndua,\ntiga.\nDengan System.out.print: empat,lima,enam.\n```\n\nTerlihat bedanya kan.\n\nDengan `println`, tulisan satu, dua, dan tiga ada di baris berbeda. Sedangkan dengan `print`, tulisan empat, lima, dan enam ada dalam satu baris yang sama.\n\nBaik method `print` maupun `println` dapat digunakan untuk mencetak literal, expression, maupun variabel.\n\nLebih lanjut tentang literal dan variabel akan kita bahas pada kesempatan selanjutnya. Sekarang kita coba lihat contohnya saja.\n\n```java\npublic class SistemOutput{\n  public static void main(String[] args) {\n    // mencetak string literal\n    System.out.println(\"ini string literal\");\n    \n    // mencetak integer literal\n    System.out.println(24);\n    \n    // mencetak isi variabel\n    String nama = \"Inva\";\n    System.out.println(nama);\n    \n    // mencetak expression (operasi data)\n    System.out.println(\"2 + 8 adalah \" + (2+8));\n  }\n}\n```\n\nJika dijalankan maka outputnya akan seperti ini:\n\n```\nini string literal\n24\nInva\n2 + 8 adalah 10\n```\n\n## Sistem Output dengan `System.out.printf`\n\nJika 2 method sebelumnya langsung mencetak apapun sebagai argumennya, `printf` ini sedikit berbeda.\n\n`System.out.printf` bekerja dengan memberi **format** atau template sebagai argumen pertamanya. Nantinya format ini akan diisi dengan nilai-nilai yang ada pada argumen-argumen selanjutnya.\n\nFormat atau template ini berbentuk literal string biasa. Hanya saja, terdapat beberapa karakter spesial yang berfungsi sebagai placeholder yang ditandai dengan tanda `%` lalu diikuti angka dan huruf sesuai kebutuhan.\n\nMari kita lihat contoh kodingannya.\n\n```java\npublic class SistemOutput{\n  public static void main(String[] args) {\n    // %s akan digantikan dengan \"Budi\"\n    // %d akan digantikan dengan 12\n    System.out.printf(\"Nama saya %s saya kelas %d\\n\", \"Budi\", 12);\n    \n    String nama = \"Adi\";\n    String kegiatan = \"belajar Java\";\n    // %s pertama digantikan dengan isi dari variabel nama\n    // %s kedua digantikan dengan isi variabel kegiatan\n    System.out.printf(\"Saya %s sedang %s\", nama, kegiatan);\n  }\n}\n```\n\n> `\\n` pada kode tersebut merupakan ***escape character new line*** fungsinya adalah untuk mencetak garis baru. Ada juga `\\t` untuk mencetak karakter `tab`. Selengkapnya tentang *escape character* bisa dibaca di [wikipedia](https://en.wikipedia.org/wiki/Escape_character).\n\nJika program dijalankan maka luarannya akan seperti ini:\n\n```\nNama saya Budi saya kelas 12\nSaya Adi sedang belajar Java\n```\n\nDalam contoh tersebut kita menggunakan 2 format string yaitu `%s` dan `%d`. Di sini, `%s` berguna untuk menampilkan literal bertipe kumpulan karakter (`String`), sedangkan `%d` untuk menampilkan literal angka (`int`).\n\n### String Format Placeholder pada Java\n\nSelain 2 format pada kode di atas, masih ada format lainnya yang bisa kita gunakan.\n\n* **`%s`** — untuk kumpulan karakter (`String`)\n* **`%d`** — untuk bilangan bulat (`int` dan `long`)\n* **`%f`** — untuk bilangan pecahan (`float` dan `double`)\n* **`%c`** — untuk karakter unicode (`char`)\n* **`%t`** — untuk format waktu (`Date` / `Time`)\n\n### Mengatur Kelebaran Format String\n\nKita juga bisa mengatur kelebaran atau padding dari string format yang kita buat. Caranya adalah dengan memberi angka tepat setelah tanda `%`.\n\nAngka positif berarti rata kanan, sedangkan angka negatif rata kiri. Mari kita coba ngoding.\n\n```java\npublic class SistemOutput{\n  public static void main(String[] args) {\n    System.out.println(\"Dengan println:\");\n    System.out.println(\"Nama     : Adi\");\n    System.out.println(\"Umur     : 19 tahun\");\n    System.out.println(\"Kegiatan : Belajar Java\");\n    \n    System.out.println(); // println kosong untuk membuat baris kosong\n    \n    System.out.println(\"Dengan printf angka positif:\");\n    System.out.printf(\"%8s : %s\\n\", \"Nama\", \"Adi\");\n    System.out.printf(\"%8s : %d tahun\\n\", \"Umur\", 19);\n    System.out.printf(\"%8s : %s\\n\", \"Kegiatan\", \"Belajar Java\");\n    \n    System.out.println();\n    \n    System.out.println(\"Dengan printf angka negatif:\");\n    System.out.printf(\"%-8s : %s\\n\", \"Nama\", \"Adi\");\n    System.out.printf(\"%-8s : %d tahun\\n\", \"Umur\", 19);\n    System.out.printf(\"%-8s : %s\\n\", \"Kegiatan\", \"Belajar Java\");\n  }\n}\n```\n\nJika dijalankan maka outputnya akan seperti ini:\n\n```\nDengan println:\nNama     : Adi\nUmur     : 19 tahun\nKegiatan : Belajar Java\n\nDengan printf angka positif:\n    Nama : Adi\n    Umur : 19 tahun\nKegiatan : Belajar Java\n\nDengan printf angka negatif:\nNama     : Adi\nUmur     : 19 tahun\nKegiatan : Belajar Java\n```\n\nTerlihat hasilnya ya. Di sini dipilih angka 8 karena kata terpanjang yaitu \"kegiatan\" memiliki 8 karakter. Hasilnya bisa dilihat tanda \":\" bisa sejajar tanpa perlu menambah spasi secara manual.\n\nSelain angka bulat positif dan negatif, kita juga bisa menggunakan **angka desimal**. Angka desimal ini punya fungsi yang berbeda untuk format yang berbeda.\n\nUntuk format `%s,` angka di belakang titik berfungsi untuk membatasi karakter yang ditampilkan.  Sedangkan untuk format `%f,` angka di belakang koma menunjukkan presisi yang diinginkan.\n\nMari kita lihat contohnya\n\n```java\npublic class SistemOutput{\n  public static void main(String[] args) {\n    System.out.printf(\"| %5s |\\n\", \"Senin\");\n    System.out.printf(\"| %5.3s |\\n\", \"Senin\");  // Tampil Sen rata kanan lebar 5\n    System.out.printf(\"| %-5.3s |\\n\", \"Senin\"); // Tampil Sen rata kiri lebar 5\n    System.out.printf(\"| %.3s |\\n\", \"Senin\");   // Tampil Sen\n    \n    System.out.println();\n    \n    System.out.printf(\"PI = %f\\n\", 3.141592);\n    System.out.printf(\"PI = %.2f\\n\", 3.141592);  // Tampil 3.14 \n    System.out.printf(\"PI = %8.2f\\n\", 3.141592); // Tampil 3.14 rata kanan lebar 8\n  }\n}\n```\n\nJika kita jalankan maka hasilnya akan seperti ini:\n\n```\n| Senin |\n|   Sen |\n| Sen   |\n| Sen |\n\nPI = 3.141592\nPI = 3.14\nPI =     3.14\n```\n\n## Selanjutnya\n\nSistem output ini penting untuk diingat, karena pasti akan digunakan pada setiap kodingan kita. Jadi jangan sampai lupa — kalau lupa bisa balik sini lagi hehe.\n\nPada kesempatan selanjutnya kita akan mulai bermain dengan data. Kita akan membahas tentang variabel dan tipe data pada bahasa Java.\n\nSelamat berkoding ria 👋",[58],{"authors_id":59},{"name":60,"slug":61,"role":62,"profile_picture":55},"Daffa Izzuddin","izzudd","Writer",{"id":64,"title":65,"slug":66,"articles":67,"parent_series":126},"21","Berkenalan dengan Java","java-intro",[68,78,86,96,106,109,118],{"id":69,"title":70,"slug":71,"excerpt":72,"thumbnail_image":73,"tags":75},"49","Berkenalan dengan Bahasa Java","berkenalan-dengan-bahasa-java","Java merupakan bahasa pemrograman tingkat tinggi dengan paradigma OOP. Bahasa ini punya slogan “write once, run anywhere”",{"id":74},"1b4c8254-328d-43a5-b489-6ed7c7da91a0",[51,76,77,53],"intro","pemrograman",{"id":79,"title":80,"slug":81,"excerpt":82,"thumbnail_image":83,"tags":85},"50","Membuat Program \"Hello World\" pada Java","membuat-program-hello-world-pada-java","Pada kesempatan kali ini kita akan membuat kode pertama kita, yaitu Hello World pada bahasa Java.",{"id":84},"d5ece737-b796-4209-9af8-1b7ce232d554",[51,23,53],{"id":87,"title":88,"slug":89,"excerpt":90,"thumbnail_image":91,"tags":93},"51","Mengenal Struktur Dasar Program Java","mengenal-struktur-dasar-program-java","Ibarat menulis skripsi, membuat program ternyata juga ada strukturnya. Dan struktur ini harus sesuai supaya tidak ditolak oleh sang komputer.",{"id":92},"dbfbf54c-b840-4c44-9f70-ddb80434a47d",[51,94,53,95],"syntax","konsep",{"id":97,"title":98,"slug":99,"excerpt":100,"thumbnail_image":101,"tags":103},"52","Penulisan Komentar pada Bahasa Java","penulisan-komentar-pada-bahasa-java","Java memiliki beberapa jenis komentar yaitu komentar satu baris, banyak baris, dan komentar dokumentasi.",{"id":102},"720de22b-6faa-4d9f-b7be-97b17f20f130",[51,104,94,105],"komentar","best-practice",{"id":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":107,"tags":108},{"id":49},[51,52,53],{"id":110,"title":111,"slug":112,"excerpt":113,"thumbnail_image":114,"tags":116},"54","Variabel dan Literal pada Bahasa Java","variabel-dan-literal-pada-bahasa-java","Literal dan variabel merupakan komponen yang penting, karena 2 hal ini berhubungan langsung dengan data dan manipulasinya.",{"id":115},"b3cfdc00-853e-424c-8a85-20c13d627d98",[51,117,95,53],"variabel",{"id":119,"title":120,"slug":121,"excerpt":122,"thumbnail_image":123,"tags":125},"55","Sistem Input pada Bahasa Java","sistem-input-pada-bahasa-java","Pada bahasa Java, sistem input dilayani oleh objek yang bernama Scanner. Objek ini memiliki banyak method yang dapat digunakan untuk sistem input.",{"id":124},"3cdb0187-3373-401c-aeaf-abeda8170a90",[51,52,53],{"id":127,"title":26,"slug":27,"parent_series":128,"children_series":130},"13",{"id":129,"title":22,"slug":23,"parent_series":55},"1",[131,132],{"id":64,"title":65,"slug":66,"cover_image":55},{"id":133,"title":134,"slug":135,"cover_image":55},"22","Variabel, Tipe Data, dan Operasi","java-variabel-tipe-data","\u003Cp>Pada kesempatan kali ini kita akan membahas tentang cara menampilkan tulisan di layar konsol dengan bahasa Java.\u003C/p>\n\u003Cp>Kita sudah melihat method \u003Ccode>System.out.println\u003C/code> pada \u003Ca href=\"/p/membuat-program-hello-world-pada-java\">program &quot;Hello World&quot;\u003C/a>, method ini adalah satu dari beberapa cara untuk mencetak sesuatu di layar konsol, atau yang kita sebut sebagai sistem output.\u003C/p>\n\u003Cp>Selain method ini sebenarnya masih ada cara lainnya. Secara umum terdapat 3 method untuk menampilkan output pada Java yaitu:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>System.out.print\u003C/code>\u003C/strong> — Mencetak tanpa pindah baris\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>System.out.println\u003C/code>\u003C/strong> — Mencetak dengan pindah baris\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>System.out.printf\u003C/code>\u003C/strong> — Mencetak dengan format tertentu\u003C/li>\n\u003C/ul>\n\u003Cp>Mari kita bahas lebih lanjut..\u003C/p>\n\u003Ch2 id=\"sistem-output-dengan-system-out-print-dan-system-out-println\">Sistem Output dengan \u003Ccode>System.out.print\u003C/code> dan \u003Ccode>System.out.println\u003C/code>\u003C/h2>\n\u003Cp>Karena mirip, kita bahas 2 method ini sekaligus saja.\u003C/p>\n\u003Cp>Baik \u003Ccode>System.out.print\u003C/code> maupun \u003Ccode>System.out.println\u003C/code> memiliki fungsi yang sama, yaitu mencetak apapun yang dimasukkan sebagai argumen ke layar konsol atau standard output.\u003C/p>\n\u003Cp>Bedanya adalah, \u003Ccode>System.out.print\u003C/code> akan \u003Cstrong>mencetak ke kanan\u003C/strong>, sedangkan \u003Ccode>System.out.println\u003C/code> \u003Cstrong>mencetak ke bawah\u003C/strong> (ganti baris / \u003Cem>print line\u003C/em>).\u003C/p>\n\u003Cp>Biar jelas, kita coba langsung koding saja.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"public%20class%20SistemOutput%7B%0A%20%20public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%20%20%20%20%2F%2F%20output%204%20baris%20pertama%20menggunakan%20println%0A%20%20%20%20System.out.println(%22Dengan%20System.out.println%3A%20%22)%3B%0A%20%20%20%20System.out.println(%22satu%2C%22)%3B%0A%20%20%20%20System.out.println(%22dua%2C%22)%3B%0A%20%20%20%20System.out.println(%22tiga.%22)%3B%0A%20%20%20%20%0A%20%20%20%20%2F%2F%20baris%20selanjutnya%20kita%20gunakan%20print%0A%20%20%20%20System.out.print(%22Dengan%20System.out.print%3A%20%22)%3B%0A%20%20%20%20System.out.print(%22empat%2C%22)%3B%0A%20%20%20%20System.out.print(%22lima%2C%22)%3B%0A%20%20%20%20System.out.print(%22enam.%22)%3B%0A%20%20%7D%0A%7D\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>public class SistemOutput{\n  public static void main(String[] args) {\n    // output 4 baris pertama menggunakan println\n    System.out.println(\"Dengan System.out.println: \");\n    System.out.println(\"satu,\");\n    System.out.println(\"dua,\");\n    System.out.println(\"tiga.\");\n    \n    // baris selanjutnya kita gunakan print\n    System.out.print(\"Dengan System.out.print: \");\n    System.out.print(\"empat,\");\n    System.out.print(\"lima,\");\n    System.out.print(\"enam.\");\n  }\n}\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Sekarang coba kita jalankan, maka kurang lebih hasilnya akan seperti ini:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"Dengan%20System.out.println%3A%20%0Asatu%2C%0Adua%2C%0Atiga.%0ADengan%20System.out.print%3A%20empat%2Clima%2Cenam.\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>Dengan System.out.println: \nsatu,\ndua,\ntiga.\nDengan System.out.print: empat,lima,enam.\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Terlihat bedanya kan.\u003C/p>\n\u003Cp>Dengan \u003Ccode>println\u003C/code>, tulisan satu, dua, dan tiga ada di baris berbeda. Sedangkan dengan \u003Ccode>print\u003C/code>, tulisan empat, lima, dan enam ada dalam satu baris yang sama.\u003C/p>\n\u003Cp>Baik method \u003Ccode>print\u003C/code> maupun \u003Ccode>println\u003C/code> dapat digunakan untuk mencetak literal, expression, maupun variabel.\u003C/p>\n\u003Cp>Lebih lanjut tentang literal dan variabel akan kita bahas pada kesempatan selanjutnya. Sekarang kita coba lihat contohnya saja.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"public%20class%20SistemOutput%7B%0A%20%20public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%20%20%20%20%2F%2F%20mencetak%20string%20literal%0A%20%20%20%20System.out.println(%22ini%20string%20literal%22)%3B%0A%20%20%20%20%0A%20%20%20%20%2F%2F%20mencetak%20integer%20literal%0A%20%20%20%20System.out.println(24)%3B%0A%20%20%20%20%0A%20%20%20%20%2F%2F%20mencetak%20isi%20variabel%0A%20%20%20%20String%20nama%20%3D%20%22Inva%22%3B%0A%20%20%20%20System.out.println(nama)%3B%0A%20%20%20%20%0A%20%20%20%20%2F%2F%20mencetak%20expression%20(operasi%20data)%0A%20%20%20%20System.out.println(%222%20%2B%208%20adalah%20%22%20%2B%20(2%2B8))%3B%0A%20%20%7D%0A%7D\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>public class SistemOutput{\n  public static void main(String[] args) {\n    // mencetak string literal\n    System.out.println(\"ini string literal\");\n    \n    // mencetak integer literal\n    System.out.println(24);\n    \n    // mencetak isi variabel\n    String nama = \"Inva\";\n    System.out.println(nama);\n    \n    // mencetak expression (operasi data)\n    System.out.println(\"2 + 8 adalah \" + (2+8));\n  }\n}\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Jika dijalankan maka outputnya akan seperti ini:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"ini%20string%20literal%0A24%0AInva%0A2%20%2B%208%20adalah%2010\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>ini string literal\n24\nInva\n2 + 8 adalah 10\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Ch2 id=\"sistem-output-dengan-system-out-printf\">Sistem Output dengan \u003Ccode>System.out.printf\u003C/code>\u003C/h2>\n\u003Cp>Jika 2 method sebelumnya langsung mencetak apapun sebagai argumennya, \u003Ccode>printf\u003C/code> ini sedikit berbeda.\u003C/p>\n\u003Cp>\u003Ccode>System.out.printf\u003C/code> bekerja dengan memberi \u003Cstrong>format\u003C/strong> atau template sebagai argumen pertamanya. Nantinya format ini akan diisi dengan nilai-nilai yang ada pada argumen-argumen selanjutnya.\u003C/p>\n\u003Cp>Format atau template ini berbentuk literal string biasa. Hanya saja, terdapat beberapa karakter spesial yang berfungsi sebagai placeholder yang ditandai dengan tanda \u003Ccode>%\u003C/code> lalu diikuti angka dan huruf sesuai kebutuhan.\u003C/p>\n\u003Cp>Mari kita lihat contoh kodingannya.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"public%20class%20SistemOutput%7B%0A%20%20public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%20%20%20%20%2F%2F%20%25s%20akan%20digantikan%20dengan%20%22Budi%22%0A%20%20%20%20%2F%2F%20%25d%20akan%20digantikan%20dengan%2012%0A%20%20%20%20System.out.printf(%22Nama%20saya%20%25s%20saya%20kelas%20%25d%5Cn%22%2C%20%22Budi%22%2C%2012)%3B%0A%20%20%20%20%0A%20%20%20%20String%20nama%20%3D%20%22Adi%22%3B%0A%20%20%20%20String%20kegiatan%20%3D%20%22belajar%20Java%22%3B%0A%20%20%20%20%2F%2F%20%25s%20pertama%20digantikan%20dengan%20isi%20dari%20variabel%20nama%0A%20%20%20%20%2F%2F%20%25s%20kedua%20digantikan%20dengan%20isi%20variabel%20kegiatan%0A%20%20%20%20System.out.printf(%22Saya%20%25s%20sedang%20%25s%22%2C%20nama%2C%20kegiatan)%3B%0A%20%20%7D%0A%7D\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>public class SistemOutput{\n  public static void main(String[] args) {\n    // %s akan digantikan dengan \"Budi\"\n    // %d akan digantikan dengan 12\n    System.out.printf(\"Nama saya %s saya kelas %d\\n\", \"Budi\", 12);\n    \n    String nama = \"Adi\";\n    String kegiatan = \"belajar Java\";\n    // %s pertama digantikan dengan isi dari variabel nama\n    // %s kedua digantikan dengan isi variabel kegiatan\n    System.out.printf(\"Saya %s sedang %s\", nama, kegiatan);\n  }\n}\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cblockquote>\n\u003Cp>\u003Ccode>\\n\u003C/code> pada kode tersebut merupakan \u003Cem>\u003Cstrong>escape character new line\u003C/strong>\u003C/em> fungsinya adalah untuk mencetak garis baru. Ada juga \u003Ccode>\\t\u003C/code> untuk mencetak karakter \u003Ccode>tab\u003C/code>. Selengkapnya tentang \u003Cem>escape character\u003C/em> bisa dibaca di \u003Ca href=\"https://en.wikipedia.org/wiki/Escape_character\">wikipedia\u003C/a>.\u003C/p>\n\u003C/blockquote>\n\u003Cp>Jika program dijalankan maka luarannya akan seperti ini:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"Nama%20saya%20Budi%20saya%20kelas%2012%0ASaya%20Adi%20sedang%20belajar%20Java\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>Nama saya Budi saya kelas 12\nSaya Adi sedang belajar Java\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Dalam contoh tersebut kita menggunakan 2 format string yaitu \u003Ccode>%s\u003C/code> dan \u003Ccode>%d\u003C/code>. Di sini, \u003Ccode>%s\u003C/code> berguna untuk menampilkan literal bertipe kumpulan karakter (\u003Ccode>String\u003C/code>), sedangkan \u003Ccode>%d\u003C/code> untuk menampilkan literal angka (\u003Ccode>int\u003C/code>).\u003C/p>\n\u003Ch3 id=\"string-format-placeholder-pada-java\">String Format Placeholder pada Java\u003C/h3>\n\u003Cp>Selain 2 format pada kode di atas, masih ada format lainnya yang bisa kita gunakan.\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>%s\u003C/code>\u003C/strong> — untuk kumpulan karakter (\u003Ccode>String\u003C/code>)\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>%d\u003C/code>\u003C/strong> — untuk bilangan bulat (\u003Ccode>int\u003C/code> dan \u003Ccode>long\u003C/code>)\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>%f\u003C/code>\u003C/strong> — untuk bilangan pecahan (\u003Ccode>float\u003C/code> dan \u003Ccode>double\u003C/code>)\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>%c\u003C/code>\u003C/strong> — untuk karakter unicode (\u003Ccode>char\u003C/code>)\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>%t\u003C/code>\u003C/strong> — untuk format waktu (\u003Ccode>Date\u003C/code> / \u003Ccode>Time\u003C/code>)\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"mengatur-kelebaran-format-string\">Mengatur Kelebaran Format String\u003C/h3>\n\u003Cp>Kita juga bisa mengatur kelebaran atau padding dari string format yang kita buat. Caranya adalah dengan memberi angka tepat setelah tanda \u003Ccode>%\u003C/code>.\u003C/p>\n\u003Cp>Angka positif berarti rata kanan, sedangkan angka negatif rata kiri. Mari kita coba ngoding.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"public%20class%20SistemOutput%7B%0A%20%20public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%20%20%20%20System.out.println(%22Dengan%20println%3A%22)%3B%0A%20%20%20%20System.out.println(%22Nama%20%20%20%20%20%3A%20Adi%22)%3B%0A%20%20%20%20System.out.println(%22Umur%20%20%20%20%20%3A%2019%20tahun%22)%3B%0A%20%20%20%20System.out.println(%22Kegiatan%20%3A%20Belajar%20Java%22)%3B%0A%20%20%20%20%0A%20%20%20%20System.out.println()%3B%20%2F%2F%20println%20kosong%20untuk%20membuat%20baris%20kosong%0A%20%20%20%20%0A%20%20%20%20System.out.println(%22Dengan%20printf%20angka%20positif%3A%22)%3B%0A%20%20%20%20System.out.printf(%22%258s%20%3A%20%25s%5Cn%22%2C%20%22Nama%22%2C%20%22Adi%22)%3B%0A%20%20%20%20System.out.printf(%22%258s%20%3A%20%25d%20tahun%5Cn%22%2C%20%22Umur%22%2C%2019)%3B%0A%20%20%20%20System.out.printf(%22%258s%20%3A%20%25s%5Cn%22%2C%20%22Kegiatan%22%2C%20%22Belajar%20Java%22)%3B%0A%20%20%20%20%0A%20%20%20%20System.out.println()%3B%0A%20%20%20%20%0A%20%20%20%20System.out.println(%22Dengan%20printf%20angka%20negatif%3A%22)%3B%0A%20%20%20%20System.out.printf(%22%25-8s%20%3A%20%25s%5Cn%22%2C%20%22Nama%22%2C%20%22Adi%22)%3B%0A%20%20%20%20System.out.printf(%22%25-8s%20%3A%20%25d%20tahun%5Cn%22%2C%20%22Umur%22%2C%2019)%3B%0A%20%20%20%20System.out.printf(%22%25-8s%20%3A%20%25s%5Cn%22%2C%20%22Kegiatan%22%2C%20%22Belajar%20Java%22)%3B%0A%20%20%7D%0A%7D\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>public class SistemOutput{\n  public static void main(String[] args) {\n    System.out.println(\"Dengan println:\");\n    System.out.println(\"Nama     : Adi\");\n    System.out.println(\"Umur     : 19 tahun\");\n    System.out.println(\"Kegiatan : Belajar Java\");\n    \n    System.out.println(); // println kosong untuk membuat baris kosong\n    \n    System.out.println(\"Dengan printf angka positif:\");\n    System.out.printf(\"%8s : %s\\n\", \"Nama\", \"Adi\");\n    System.out.printf(\"%8s : %d tahun\\n\", \"Umur\", 19);\n    System.out.printf(\"%8s : %s\\n\", \"Kegiatan\", \"Belajar Java\");\n    \n    System.out.println();\n    \n    System.out.println(\"Dengan printf angka negatif:\");\n    System.out.printf(\"%-8s : %s\\n\", \"Nama\", \"Adi\");\n    System.out.printf(\"%-8s : %d tahun\\n\", \"Umur\", 19);\n    System.out.printf(\"%-8s : %s\\n\", \"Kegiatan\", \"Belajar Java\");\n  }\n}\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Jika dijalankan maka outputnya akan seperti ini:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"Dengan%20println%3A%0ANama%20%20%20%20%20%3A%20Adi%0AUmur%20%20%20%20%20%3A%2019%20tahun%0AKegiatan%20%3A%20Belajar%20Java%0A%0ADengan%20printf%20angka%20positif%3A%0A%20%20%20%20Nama%20%3A%20Adi%0A%20%20%20%20Umur%20%3A%2019%20tahun%0AKegiatan%20%3A%20Belajar%20Java%0A%0ADengan%20printf%20angka%20negatif%3A%0ANama%20%20%20%20%20%3A%20Adi%0AUmur%20%20%20%20%20%3A%2019%20tahun%0AKegiatan%20%3A%20Belajar%20Java\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>Dengan println:\nNama     : Adi\nUmur     : 19 tahun\nKegiatan : Belajar Java\n\nDengan printf angka positif:\n    Nama : Adi\n    Umur : 19 tahun\nKegiatan : Belajar Java\n\nDengan printf angka negatif:\nNama     : Adi\nUmur     : 19 tahun\nKegiatan : Belajar Java\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Terlihat hasilnya ya. Di sini dipilih angka 8 karena kata terpanjang yaitu &quot;kegiatan&quot; memiliki 8 karakter. Hasilnya bisa dilihat tanda &quot;:&quot; bisa sejajar tanpa perlu menambah spasi secara manual.\u003C/p>\n\u003Cp>Selain angka bulat positif dan negatif, kita juga bisa menggunakan \u003Cstrong>angka desimal\u003C/strong>. Angka desimal ini punya fungsi yang berbeda untuk format yang berbeda.\u003C/p>\n\u003Cp>Untuk format \u003Ccode>%s,\u003C/code> angka di belakang titik berfungsi untuk membatasi karakter yang ditampilkan.  Sedangkan untuk format \u003Ccode>%f,\u003C/code> angka di belakang koma menunjukkan presisi yang diinginkan.\u003C/p>\n\u003Cp>Mari kita lihat contohnya\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"public%20class%20SistemOutput%7B%0A%20%20public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%20%20%20%20System.out.printf(%22%7C%20%255s%20%7C%5Cn%22%2C%20%22Senin%22)%3B%0A%20%20%20%20System.out.printf(%22%7C%20%255.3s%20%7C%5Cn%22%2C%20%22Senin%22)%3B%20%20%2F%2F%20Tampil%20Sen%20rata%20kanan%20lebar%205%0A%20%20%20%20System.out.printf(%22%7C%20%25-5.3s%20%7C%5Cn%22%2C%20%22Senin%22)%3B%20%2F%2F%20Tampil%20Sen%20rata%20kiri%20lebar%205%0A%20%20%20%20System.out.printf(%22%7C%20%25.3s%20%7C%5Cn%22%2C%20%22Senin%22)%3B%20%20%20%2F%2F%20Tampil%20Sen%0A%20%20%20%20%0A%20%20%20%20System.out.println()%3B%0A%20%20%20%20%0A%20%20%20%20System.out.printf(%22PI%20%3D%20%25f%5Cn%22%2C%203.141592)%3B%0A%20%20%20%20System.out.printf(%22PI%20%3D%20%25.2f%5Cn%22%2C%203.141592)%3B%20%20%2F%2F%20Tampil%203.14%20%0A%20%20%20%20System.out.printf(%22PI%20%3D%20%258.2f%5Cn%22%2C%203.141592)%3B%20%2F%2F%20Tampil%203.14%20rata%20kanan%20lebar%208%0A%20%20%7D%0A%7D\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>public class SistemOutput{\n  public static void main(String[] args) {\n    System.out.printf(\"| %5s |\\n\", \"Senin\");\n    System.out.printf(\"| %5.3s |\\n\", \"Senin\");  // Tampil Sen rata kanan lebar 5\n    System.out.printf(\"| %-5.3s |\\n\", \"Senin\"); // Tampil Sen rata kiri lebar 5\n    System.out.printf(\"| %.3s |\\n\", \"Senin\");   // Tampil Sen\n    \n    System.out.println();\n    \n    System.out.printf(\"PI = %f\\n\", 3.141592);\n    System.out.printf(\"PI = %.2f\\n\", 3.141592);  // Tampil 3.14 \n    System.out.printf(\"PI = %8.2f\\n\", 3.141592); // Tampil 3.14 rata kanan lebar 8\n  }\n}\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Jika kita jalankan maka hasilnya akan seperti ini:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%7C%20Senin%20%7C%0A%7C%20%20%20Sen%20%7C%0A%7C%20Sen%20%20%20%7C%0A%7C%20Sen%20%7C%0A%0API%20%3D%203.141592%0API%20%3D%203.14%0API%20%3D%20%20%20%20%203.14\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>| Senin |\n|   Sen |\n| Sen   |\n| Sen |\n\nPI = 3.141592\nPI = 3.14\nPI =     3.14\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Ch2 id=\"selanjutnya\">Selanjutnya\u003C/h2>\n\u003Cp>Sistem output ini penting untuk diingat, karena pasti akan digunakan pada setiap kodingan kita. Jadi jangan sampai lupa — kalau lupa bisa balik sini lagi hehe.\u003C/p>\n\u003Cp>Pada kesempatan selanjutnya kita akan mulai bermain dengan data. Kita akan membahas tentang variabel dan tipe data pada bahasa Java.\u003C/p>\n\u003Cp>Selamat berkoding ria 👋\u003C/p>\n","",[139,152,167,179],{"id":140,"title":141,"slug":142,"excerpt":143,"thumbnail_image":144,"tags":146},"46","Mengapa C Mulai Ditinggalkan: Duel Filosofi Keamanan Rust vs Kesederhanaan Zig","mengapa-c-mulai-ditinggalkan-duel-filosofi-rust-vs-zig","Pernah denger kalau sekitar 70% celah keamanan kritis software modern itu asalnya dari bahasa C? Iya, bahasa yang udah jadi fondasi internet ini 😅. Yuk, kita bedah duel filosofi Rust vs Zig dan cari tahu mana yang pas buat proyek kalian!",{"id":145},"1942a5c9-c1f6-476d-9913-768f78d9d8eb",[147,148,149,150,151],"system-programming","rust","zig","c","memory-safety",{"id":153,"title":154,"slug":155,"excerpt":156,"thumbnail_image":157,"tags":159},"45","Rate Limiting Algorithms: Token Bucket vs Leaky Bucket vs Sliding Window","rate-limiting-algorithms-token-bucket-leaky-bucket-sliding-window","Udah tahu kenapa *rate limiting* itu wajib, tapi masih bingung beda Token Bucket, Leaky Bucket, Fixed Window, dan Sliding Window? Yuk, kita adu empat algoritma ini bareng-bareng dan cari tahu mana yang paling pas buat API kalian!",{"id":158},"0e0ed26d-20c6-443c-bde1-4a6200f6f801",[160,161,162,163,164,165,166],"backend","system-design","rate-limiting","redis","api-gateway","architecture","traffict-management",{"id":168,"title":169,"slug":170,"excerpt":171,"thumbnail_image":172,"tags":174},"44","Transactional Outbox Pattern: Solusi Konsistensi Database dan Message Broker Tanpa 2PC","transactional-outbox-pattern-konsistensi-database-message-broker","Pernah nggak kalian lihat pesanan udah masuk database, tapi email konfirmasinya nggak pernah kekirim? Itu gejala *dual-write problem*. Yuk, kita bedah Transactional Outbox Pattern biar data dan *event* kalian nggak lagi berselisih paham!",{"id":173},"e3c617fd-1486-4b82-b937-94fbec846c77",[160,175,165,176,177,161,178],"microservices","database","message-broker","postgresql",{"id":180,"title":181,"slug":182,"excerpt":183,"thumbnail_image":184,"tags":186},"43","Dead Letter Queue (DLQ) & Retry Policy: Menyelamatkan Pesan Nyasar di RabbitMQ Tanpa Bikin Worker Macet","dead-letter-queue-retry-policy-rabbitmq-resilient-messaging","Pernah nggak sih, *worker* kalian nolak satu pesan terus-terusan sampai CPU melonjak 100%? Itu namanya *poison message loop*, jebakan klasik di RabbitMQ. Yuk, kita bahas cara pasang *retry policy* dan *dead letter queue* yang bener!",{"id":185},"6c0a7ead-4841-4073-b29e-df7ae0f2aa3c",[187,177,160,165,175,188,189],"rabbitmq","async","python",[191,195,198,202,205],{"text":192,"depth":193,"id":194},"Sistem Output dengan System.out.print dan System.out.println",2,"sistem-output-dengan-system-out-print-dan-system-out-println",{"text":196,"depth":193,"id":197},"Sistem Output dengan System.out.printf","sistem-output-dengan-system-out-printf",{"text":199,"depth":200,"id":201},"String Format Placeholder pada Java",3,"string-format-placeholder-pada-java",{"text":203,"depth":200,"id":204},"Mengatur Kelebaran Format String","mengatur-kelebaran-format-string",{"text":206,"depth":193,"id":207},"Selanjutnya","selanjutnya",1791045070183]