[{"data":1,"prerenderedAt":347},["ShallowReactive",2],{"tag-labels":3,"site-header":4,"article-sistem-output-pada-bahasa-java-id":72},{},{"featuredPost":5,"navigations":29},{"id":6,"title":7,"title_en":8,"slug":9,"excerpt":10,"excerpt_en":11,"has_translation":12,"published_at":13,"reading_time":14,"hidden_from_listing":15,"tags":16,"thumbnail_image":21,"og_image":22,"series":23,"authors":28},110,"Ketika Pilih Framework Cuma Biar Kelihatan Beda","When You Pick a Framework Just to Look Different","ketika-pilih-framework-cuma-biar-kelihatan-beda","Terakhir kali kamu milih framework atau library baru, itu karena masalahmu butuh alat itu, atau karena alatnya kedengaran keren dan belum banyak yang pakai? Pertanyaan ini nggak enak dijawab. Soalnya keputusan teknologi sering diambil dengan alasan yang nggak pernah ditulis di dokumen teknis mana pun.","The last time you chose a new framework or library, was it because your problem needed that tool, or because it sounded cool and few people around you were using it? That question is uncomfortable. Technology decisions are often made for reasons that never appear in any technical document.",true,"2026-10-06T15:25:21.000Z",5,false,[17,18,19,20],"karier","framework","opini","pengalaman",null,"\u002Fog\u002Fketika-pilih-framework-cuma-biar-kelihatan-beda.png",{"id":24,"title":25,"title_en":26,"slug":27},9,"Artikel","Articles","all",[],[30,46,67],{"collection":31,"item":32},"series",{"__typename":31,"title":25,"title_en":26,"slug":27,"children_series":33},[34,38,42],{"title":35,"title_en":36,"slug":37},"Kecerdasan Artifisial","Artificial Intelligence","kecerdasan-artifisial",{"title":39,"title_en":40,"slug":41},"Konsep Dasar Pemrograman","Programming Fundamentals","konsep-dasar-pemrograman",{"title":43,"title_en":44,"slug":45},"Algoritma dan Struktur Data","Algorithms and Data Structures","algoritma-struktur-data",{"collection":31,"item":47},{"__typename":31,"title":48,"title_en":48,"slug":49,"children_series":50},"Tutorial","tutorial",[51,55,59,63],{"title":52,"title_en":53,"slug":54},"Belajar Python","Learning Python","belajar-python",{"title":56,"title_en":57,"slug":58},"Belajar Golang","Learning Go","belajar-golang",{"title":60,"title_en":61,"slug":62},"Belajar Java","Learning Java","belajar-java",{"title":64,"title_en":65,"slug":66},"Belajar Pascal","Learning Pascal","belajar-pascal",{"collection":31,"item":68},{"__typename":31,"title":69,"title_en":69,"slug":70,"children_series":71},"Lab","lab",[],{"article":73,"renderedBody":228,"renderedTakeaway":229,"latestArticles":230,"toc":330},{"id":74,"title":75,"title_en":76,"slug":77,"excerpt":78,"excerpt_en":79,"has_translation":12,"published_at":80,"reading_time":14,"hidden_from_listing":15,"tags":81,"thumbnail_image":21,"og_image":85,"series":86,"authors":221,"body_locale":224,"available_locales":225,"body":227,"takeway":21,"prerequisite":21},53,"Sistem Output pada Bahasa Java","The Output System in the Java Language","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.","When we built the \"Hello World\" program we already met the `System.out.println` method. Java has other output methods too, and this piece goes through them.","2022-08-23T00:00:00.000Z",[82,83,84],"java","input-output","dasar","\u002Fog\u002Fsistem-output-pada-bahasa-java.png",{"id":87,"title":88,"title_en":89,"slug":90,"description":91,"description_en":92,"articles":93,"children_series":210,"parent_series":211},21,"Berkenalan dengan Java","Getting Started with Java","java-intro","Kenalan sama Java dari nol: bikin program pertama, paham struktur dasarnya, sampai bisa nerima input dan nampilin output.","Meet Java from scratch: your first program, how the pieces fit together, and how to read input and print output.",[94,108,129,142,159,175,180,196],{"id":95,"title":96,"title_en":97,"slug":98,"excerpt":99,"excerpt_en":100,"has_translation":12,"published_at":101,"reading_time":14,"hidden_from_listing":15,"tags":102,"thumbnail_image":21,"og_image":105,"series":106,"authors":107},14,"Instalasi Java dengan Visual Studio Code","Installing Java with Visual Studio Code","instalasi-java-dengan-visual-studio-code","Mau belajar ngoding Java tapi spek laptop pas-pasan buat buka IDE berat? Yuk, cari tahu cara setup VS Code biar ngoding Java tetap lancar dan enteng!","Want to learn Java but your laptop barely handles a heavy IDE? Here's how to set up VS Code so writing Java stays light and smooth.","2026-06-15T02:37:24.974Z",[103,82,104],"howto","editor","\u002Fog\u002Finstalasi-java-dengan-visual-studio-code.png",{"id":87,"title":88,"title_en":89,"slug":90},[],{"id":109,"title":110,"title_en":111,"slug":112,"excerpt":113,"excerpt_en":114,"has_translation":12,"published_at":115,"reading_time":116,"hidden_from_listing":15,"tags":117,"thumbnail_image":21,"og_image":120,"series":121,"authors":122},49,"Berkenalan dengan Bahasa Java","Getting to Know the Java Language","berkenalan-dengan-bahasa-java","Java merupakan bahasa pemrograman tingkat tinggi dengan paradigma OOP. Bahasa ini punya slogan “write once, run anywhere”","Java is a high-level programming language built on the OOP paradigm, and it carries the slogan “write once, run anywhere”.","2022-08-11T00:00:00.000Z",3,[82,118,119,84],"intro","pemrograman","\u002Fog\u002Fberkenalan-dengan-bahasa-java.png",{"id":87,"title":88,"title_en":89,"slug":90},[123],{"authors_id":124},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},1,"Daffa Izzuddin","izzudd","Writer",{"id":130,"title":131,"title_en":132,"slug":133,"excerpt":134,"excerpt_en":135,"has_translation":12,"published_at":115,"reading_time":125,"hidden_from_listing":15,"tags":136,"thumbnail_image":21,"og_image":137,"series":138,"authors":139},50,"Membuat Program \"Hello World\" pada Java","Building a \"Hello World\" Program in Java","membuat-program-hello-world-pada-java","Pada kesempatan kali ini kita akan membuat kode pertama kita, yaitu Hello World pada bahasa Java.","This time we build our first program, Hello World, in the Java language.",[82,49,84],"\u002Fog\u002Fmembuat-program-hello-world-pada-java.png",{"id":87,"title":88,"title_en":89,"slug":90},[140],{"authors_id":141},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},{"id":143,"title":144,"title_en":145,"slug":146,"excerpt":147,"excerpt_en":148,"has_translation":12,"published_at":149,"reading_time":150,"hidden_from_listing":15,"tags":151,"thumbnail_image":21,"og_image":154,"series":155,"authors":156},51,"Mengenal Struktur Dasar Program Java","Understanding the Basic Structure of a Java Program","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.","Writing a program has a structure, the way writing a thesis does. And that structure has to be right so the computer doesn't reject it.","2022-08-12T09:43:57.000Z",4,[82,152,84,153],"syntax","konsep","\u002Fog\u002Fmengenal-struktur-dasar-program-java.png",{"id":87,"title":88,"title_en":89,"slug":90},[157],{"authors_id":158},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},{"id":160,"title":161,"title_en":162,"slug":163,"excerpt":164,"excerpt_en":165,"has_translation":12,"published_at":166,"reading_time":116,"hidden_from_listing":15,"tags":167,"thumbnail_image":21,"og_image":170,"series":171,"authors":172},52,"Penulisan Komentar pada Bahasa Java","Writing Comments in the Java Language","penulisan-komentar-pada-bahasa-java","Java memiliki beberapa jenis komentar yaitu komentar satu baris, banyak baris, dan komentar dokumentasi.","Java has several kinds of comments: single line comments, multiline comments, and doc comments.","2022-08-21T03:23:11.000Z",[82,168,152,169],"komentar","best-practice","\u002Fog\u002Fpenulisan-komentar-pada-bahasa-java.png",{"id":87,"title":88,"title_en":89,"slug":90},[173],{"authors_id":174},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},{"id":74,"title":75,"title_en":76,"slug":77,"excerpt":78,"excerpt_en":79,"has_translation":12,"published_at":80,"reading_time":14,"hidden_from_listing":15,"tags":81,"thumbnail_image":21,"og_image":85,"series":176,"authors":177},{"id":87,"title":88,"title_en":89,"slug":90},[178],{"authors_id":179},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},{"id":181,"title":182,"title_en":183,"slug":184,"excerpt":185,"excerpt_en":186,"has_translation":12,"published_at":187,"reading_time":188,"hidden_from_listing":15,"tags":189,"thumbnail_image":21,"og_image":191,"series":192,"authors":193},54,"Variabel dan Literal pada Bahasa Java","Variables and Literals in the Java Language","variabel-dan-literal-pada-bahasa-java","Literal dan variabel merupakan komponen yang penting, karena 2 hal ini berhubungan langsung dengan data dan manipulasinya.","Literals and variables are important components, because these 2 things connect directly to data and how you manipulate it.","2022-09-07T07:33:30.000Z",7,[82,190,153,84],"variabel","\u002Fog\u002Fvariabel-dan-literal-pada-bahasa-java.png",{"id":87,"title":88,"title_en":89,"slug":90},[194],{"authors_id":195},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},{"id":197,"title":198,"title_en":199,"slug":200,"excerpt":201,"excerpt_en":202,"has_translation":12,"published_at":203,"reading_time":188,"hidden_from_listing":15,"tags":204,"thumbnail_image":21,"og_image":205,"series":206,"authors":207},55,"Sistem Input pada Bahasa Java","The Input System in the Java Language","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.","In Java, the input system is handled by an object named Scanner, and that object has plenty of methods you can use for input.","2022-09-27T14:15:59.000Z",[82,83,84],"\u002Fog\u002Fsistem-input-pada-bahasa-java.png",{"id":87,"title":88,"title_en":89,"slug":90},[208],{"authors_id":209},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},[],{"id":212,"title":60,"title_en":61,"slug":62,"parent_series":213,"children_series":214},13,{"id":125,"title":48,"title_en":48,"slug":49},[215,216],{"id":87,"title":88,"title_en":89,"slug":90,"cover_image":21},{"id":217,"title":218,"title_en":219,"slug":220,"cover_image":21},22,"Variabel, Tipe Data, dan Operasi","Variables, Types, and Operations","java-variabel-tipe-data",[222],{"authors_id":223},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},"id",[226,224],"en","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\"](\u002Fp\u002Fmembuat-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 \u002F *print line*).\n\nBiar jelas, kita coba langsung koding saja.\n\n```java\npublic class SistemOutput{\n  public static void main(String[] args) {\n    \u002F\u002F 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    \u002F\u002F 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    \u002F\u002F mencetak string literal\n    System.out.println(\"ini string literal\");\n    \n    \u002F\u002F mencetak integer literal\n    System.out.println(24);\n    \n    \u002F\u002F mencetak isi variabel\n    String nama = \"Inva\";\n    System.out.println(nama);\n    \n    \u002F\u002F 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    \u002F\u002F %s akan digantikan dengan \"Budi\"\n    \u002F\u002F %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    \u002F\u002F %s pertama digantikan dengan isi dari variabel nama\n    \u002F\u002F %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:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEscape_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` \u002F `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(); \u002F\u002F 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\");  \u002F\u002F Tampil Sen rata kanan lebar 5\n    System.out.printf(\"| %-5.3s |\\n\", \"Senin\"); \u002F\u002F Tampil Sen rata kiri lebar 5\n    System.out.printf(\"| %.3s |\\n\", \"Senin\");   \u002F\u002F 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);  \u002F\u002F Tampil 3.14 \n    System.out.printf(\"PI = %8.2f\\n\", 3.141592); \u002F\u002F 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 👋\n","\u003Cp>Pada kesempatan kali ini kita akan membahas tentang cara menampilkan tulisan di layar konsol dengan bahasa Java.\u003C\u002Fp>\n\u003Cp>Kita sudah melihat method \u003Ccode>System.out.println\u003C\u002Fcode> pada \u003Ca href=\"\u002Fp\u002Fmembuat-program-hello-world-pada-java\">program &quot;Hello World&quot;\u003C\u002Fa>, method ini adalah satu dari beberapa cara untuk mencetak sesuatu di layar konsol, atau yang kita sebut sebagai sistem output.\u003C\u002Fp>\n\u003Cp>Selain method ini sebenarnya masih ada cara lainnya. Secara umum terdapat 3 method untuk menampilkan output pada Java yaitu:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>System.out.print\u003C\u002Fcode>\u003C\u002Fstrong> — Mencetak tanpa pindah baris\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>System.out.println\u003C\u002Fcode>\u003C\u002Fstrong> — Mencetak dengan pindah baris\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>System.out.printf\u003C\u002Fcode>\u003C\u002Fstrong> — Mencetak dengan format tertentu\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Mari kita bahas lebih lanjut..\u003C\u002Fp>\n\u003Ch2 id=\"sistem-output-dengan-system-out-print-dan-system-out-println\">Sistem Output dengan \u003Ccode>System.out.print\u003C\u002Fcode> dan \u003Ccode>System.out.println\u003C\u002Fcode>\u003C\u002Fh2>\n\u003Cp>Karena mirip, kita bahas 2 method ini sekaligus saja.\u003C\u002Fp>\n\u003Cp>Baik \u003Ccode>System.out.print\u003C\u002Fcode> maupun \u003Ccode>System.out.println\u003C\u002Fcode> memiliki fungsi yang sama, yaitu mencetak apapun yang dimasukkan sebagai argumen ke layar konsol atau standard output.\u003C\u002Fp>\n\u003Cp>Bedanya adalah, \u003Ccode>System.out.print\u003C\u002Fcode> akan \u003Cstrong>mencetak ke kanan\u003C\u002Fstrong>, sedangkan \u003Ccode>System.out.println\u003C\u002Fcode> \u003Cstrong>mencetak ke bawah\u003C\u002Fstrong> (ganti baris \u002F \u003Cem>print line\u003C\u002Fem>).\u003C\u002Fp>\n\u003Cp>Biar jelas, kita coba langsung koding saja.\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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    \u002F\u002F 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    \u002F\u002F 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\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Sekarang coba kita jalankan, maka kurang lebih hasilnya akan seperti ini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Terlihat bedanya kan.\u003C\u002Fp>\n\u003Cp>Dengan \u003Ccode>println\u003C\u002Fcode>, tulisan satu, dua, dan tiga ada di baris berbeda. Sedangkan dengan \u003Ccode>print\u003C\u002Fcode>, tulisan empat, lima, dan enam ada dalam satu baris yang sama.\u003C\u002Fp>\n\u003Cp>Baik method \u003Ccode>print\u003C\u002Fcode> maupun \u003Ccode>println\u003C\u002Fcode> dapat digunakan untuk mencetak literal, expression, maupun variabel.\u003C\u002Fp>\n\u003Cp>Lebih lanjut tentang literal dan variabel akan kita bahas pada kesempatan selanjutnya. Sekarang kita coba lihat contohnya saja.\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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    \u002F\u002F mencetak string literal\n    System.out.println(\"ini string literal\");\n    \n    \u002F\u002F mencetak integer literal\n    System.out.println(24);\n    \n    \u002F\u002F mencetak isi variabel\n    String nama = \"Inva\";\n    System.out.println(nama);\n    \n    \u002F\u002F mencetak expression (operasi data)\n    System.out.println(\"2 + 8 adalah \" + (2+8));\n  }\n}\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Jika dijalankan maka outputnya akan seperti ini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Ch2 id=\"sistem-output-dengan-system-out-printf\">Sistem Output dengan \u003Ccode>System.out.printf\u003C\u002Fcode>\u003C\u002Fh2>\n\u003Cp>Jika 2 method sebelumnya langsung mencetak apapun sebagai argumennya, \u003Ccode>printf\u003C\u002Fcode> ini sedikit berbeda.\u003C\u002Fp>\n\u003Cp>\u003Ccode>System.out.printf\u003C\u002Fcode> bekerja dengan memberi \u003Cstrong>format\u003C\u002Fstrong> atau template sebagai argumen pertamanya. Nantinya format ini akan diisi dengan nilai-nilai yang ada pada argumen-argumen selanjutnya.\u003C\u002Fp>\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\u002Fcode> lalu diikuti angka dan huruf sesuai kebutuhan.\u003C\u002Fp>\n\u003Cp>Mari kita lihat contoh kodingannya.\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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    \u002F\u002F %s akan digantikan dengan \"Budi\"\n    \u002F\u002F %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    \u002F\u002F %s pertama digantikan dengan isi dari variabel nama\n    \u002F\u002F %s kedua digantikan dengan isi variabel kegiatan\n    System.out.printf(\"Saya %s sedang %s\", nama, kegiatan);\n  }\n}\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cblockquote>\n\u003Cp>\u003Ccode>\\n\u003C\u002Fcode> pada kode tersebut merupakan \u003Cem>\u003Cstrong>escape character new line\u003C\u002Fstrong>\u003C\u002Fem> fungsinya adalah untuk mencetak garis baru. Ada juga \u003Ccode>\\t\u003C\u002Fcode> untuk mencetak karakter \u003Ccode>tab\u003C\u002Fcode>. Selengkapnya tentang \u003Cem>escape character\u003C\u002Fem> bisa dibaca di \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEscape_character\">wikipedia\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Jika program dijalankan maka luarannya akan seperti ini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Dalam contoh tersebut kita menggunakan 2 format string yaitu \u003Ccode>%s\u003C\u002Fcode> dan \u003Ccode>%d\u003C\u002Fcode>. Di sini, \u003Ccode>%s\u003C\u002Fcode> berguna untuk menampilkan literal bertipe kumpulan karakter (\u003Ccode>String\u003C\u002Fcode>), sedangkan \u003Ccode>%d\u003C\u002Fcode> untuk menampilkan literal angka (\u003Ccode>int\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Ch3 id=\"string-format-placeholder-pada-java\">String Format Placeholder pada Java\u003C\u002Fh3>\n\u003Cp>Selain 2 format pada kode di atas, masih ada format lainnya yang bisa kita gunakan.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>%s\u003C\u002Fcode>\u003C\u002Fstrong> — untuk kumpulan karakter (\u003Ccode>String\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>%d\u003C\u002Fcode>\u003C\u002Fstrong> — untuk bilangan bulat (\u003Ccode>int\u003C\u002Fcode> dan \u003Ccode>long\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>%f\u003C\u002Fcode>\u003C\u002Fstrong> — untuk bilangan pecahan (\u003Ccode>float\u003C\u002Fcode> dan \u003Ccode>double\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>%c\u003C\u002Fcode>\u003C\u002Fstrong> — untuk karakter unicode (\u003Ccode>char\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>%t\u003C\u002Fcode>\u003C\u002Fstrong> — untuk format waktu (\u003Ccode>Date\u003C\u002Fcode> \u002F \u003Ccode>Time\u003C\u002Fcode>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"mengatur-kelebaran-format-string\">Mengatur Kelebaran Format String\u003C\u002Fh3>\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\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Angka positif berarti rata kanan, sedangkan angka negatif rata kiri. Mari kita coba ngoding.\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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(); \u002F\u002F 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\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Jika dijalankan maka outputnya akan seperti ini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\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\u002Fp>\n\u003Cp>Selain angka bulat positif dan negatif, kita juga bisa menggunakan \u003Cstrong>angka desimal\u003C\u002Fstrong>. Angka desimal ini punya fungsi yang berbeda untuk format yang berbeda.\u003C\u002Fp>\n\u003Cp>Untuk format \u003Ccode>%s,\u003C\u002Fcode> angka di belakang titik berfungsi untuk membatasi karakter yang ditampilkan.  Sedangkan untuk format \u003Ccode>%f,\u003C\u002Fcode> angka di belakang koma menunjukkan presisi yang diinginkan.\u003C\u002Fp>\n\u003Cp>Mari kita lihat contohnya\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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\");  \u002F\u002F Tampil Sen rata kanan lebar 5\n    System.out.printf(\"| %-5.3s |\\n\", \"Senin\"); \u002F\u002F Tampil Sen rata kiri lebar 5\n    System.out.printf(\"| %.3s |\\n\", \"Senin\");   \u002F\u002F 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);  \u002F\u002F Tampil 3.14 \n    System.out.printf(\"PI = %8.2f\\n\", 3.141592); \u002F\u002F Tampil 3.14 rata kanan lebar 8\n  }\n}\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Jika kita jalankan maka hasilnya akan seperti ini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Ch2 id=\"selanjutnya\">Selanjutnya\u003C\u002Fh2>\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\u002Fp>\n\u003Cp>Pada kesempatan selanjutnya kita akan mulai bermain dengan data. Kita akan membahas tentang variabel dan tipe data pada bahasa Java.\u003C\u002Fp>\n\u003Cp>Selamat berkoding ria 👋\u003C\u002Fp>\n","",[231,250,263,276,289,310],{"id":232,"title":233,"title_en":21,"slug":234,"excerpt":235,"excerpt_en":21,"has_translation":15,"published_at":236,"reading_time":237,"hidden_from_listing":15,"tags":238,"thumbnail_image":21,"og_image":241,"series":242,"authors":247},133,"Python Strings: the Badge That Only Worked for One Name","python-strings","The badge script printed the right name for the person who wrote it and the wrong name for everybody else. Slicing counts characters, and a name is words.","2026-10-28T13:00:00.000Z",6,[239,240],"python","string","\u002Fog\u002Fpython-strings.png",{"id":243,"title":244,"title_en":245,"slug":246},30,"Koleksi dan String","Collections and Strings","python-collections",[248],{"authors_id":249},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},{"id":251,"title":252,"title_en":21,"slug":253,"excerpt":254,"excerpt_en":21,"has_translation":15,"published_at":255,"reading_time":237,"hidden_from_listing":15,"tags":256,"thumbnail_image":21,"og_image":258,"series":259,"authors":260},132,"Python Tuples: Why All Three Points Are the Same Point","python-tuples","Three points walk into a loop and come out identical. The list was never copied three times; the name was. A tuple makes that bug impossible.","2026-10-28T12:00:00.000Z",[239,257],"tuple","\u002Fog\u002Fpython-tuples.png",{"id":243,"title":244,"title_en":245,"slug":246},[261],{"authors_id":262},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},{"id":264,"title":265,"title_en":21,"slug":266,"excerpt":267,"excerpt_en":21,"has_translation":15,"published_at":268,"reading_time":237,"hidden_from_listing":15,"tags":269,"thumbnail_image":21,"og_image":271,"series":272,"authors":273},131,"Python Sets: the Duplicate That Keeps Coming Back","python-sets","A de-duplication loop that works on clean data leaves four tags where there should be two. The bug is case, and the fix is a `set`.","2026-10-28T11:00:00.000Z",[239,270],"set","\u002Fog\u002Fpython-sets.png",{"id":243,"title":244,"title_en":245,"slug":246},[274],{"authors_id":275},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},{"id":277,"title":278,"title_en":21,"slug":279,"excerpt":280,"excerpt_en":21,"has_translation":15,"published_at":281,"reading_time":237,"hidden_from_listing":15,"tags":282,"thumbnail_image":21,"og_image":284,"series":285,"authors":286},130,"Python Dictionaries: the Key That Isn't There","python-dictionary","A word counter dies the first time it meets a word twice. The fix is one line; what takes longer is knowing which of a dict's three lookups to reach for.","2026-10-28T10:00:00.000Z",[239,283],"dictionary","\u002Fog\u002Fpython-dictionary.png",{"id":243,"title":244,"title_en":245,"slug":246},[287],{"authors_id":288},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},{"id":290,"title":291,"title_en":292,"slug":293,"excerpt":294,"excerpt_en":295,"has_translation":12,"published_at":296,"reading_time":14,"hidden_from_listing":15,"tags":297,"thumbnail_image":21,"og_image":304,"series":305,"authors":307},129,"Biar RAG nggak kena 504: pisahin jalur query dan ingestion","So Your RAG Stops Hitting 504: Split the Query Path From Ingestion","rag-pisah-jalur-query-dan-ingestion","Satu service RAG yang merangkap parsing dan menjawab kueri bakal tumbang pas ada yang upload PDF 200 halaman. Obatnya dua jalur dan satu queue.","One RAG service that both parses uploads and answers queries will fall over the moment someone uploads a 200-page PDF. The cure is two paths and one queue.","2026-10-22T01:30:00.000Z",[298,299,300,301,302,303],"rag","cloud-run","cloud-tasks","gcp","serverless","arsitektur","\u002Fog\u002Frag-pisah-jalur-query-dan-ingestion.png",{"id":306,"title":35,"title_en":36,"slug":37},8,[308],{"authors_id":309},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},{"id":311,"title":312,"title_en":313,"slug":314,"excerpt":315,"excerpt_en":316,"has_translation":12,"published_at":317,"reading_time":237,"hidden_from_listing":15,"tags":318,"thumbnail_image":21,"og_image":325,"series":326,"authors":327},128,"Linear atau graf: cara mengatur banyak agent tanpa loop abadi","Linear or Graph: How to Run Many Agents Without an Eternal Loop","multi-agen-linear-atau-grafik","Satu agent dengan dua puluh tool gampang kacau. Begitu beberapa agent saling revisi, kamu butuh graf yang mendukung cycle dan angka yang membuatnya berhenti.","One agent with twenty tools gets messy fast. Once several agents revise each other, you need a graph that allows cycles and a number that makes it stop.","2026-10-21T16:05:00.000Z",[319,320,321,322,323,324],"multi-agent","langgraph","autogen","orkestrasi","checkpoint","llm","\u002Fog\u002Fmulti-agen-linear-atau-grafik.png",{"id":306,"title":35,"title_en":36,"slug":37},[328],{"authors_id":329},{"id":125,"name":126,"slug":127,"role":128,"profile_picture":21},[331,335,338,341,344],{"text":332,"depth":333,"id":334},"Sistem Output dengan System.out.print dan System.out.println",2,"sistem-output-dengan-system-out-print-dan-system-out-println",{"text":336,"depth":333,"id":337},"Sistem Output dengan System.out.printf","sistem-output-dengan-system-out-printf",{"text":339,"depth":116,"id":340},"String Format Placeholder pada Java","string-format-placeholder-pada-java",{"text":342,"depth":116,"id":343},"Mengatur Kelebaran Format String","mengatur-kelebaran-format-string",{"text":345,"depth":333,"id":346},"Selanjutnya","selanjutnya",1793295835253]