<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <title>Informatika Insight 1</title>
    <link href="https://informatikainsight.netlify.app/feed.xml" rel="self" />
    <link href="https://informatikainsight.netlify.app" />
    <updated>2026-02-26T10:05:16+07:00</updated>
    <author>
        <name>Abdan A. S.</name>
    </author>
    <id>https://informatikainsight.netlify.app</id>

    <entry>
        <title>Praktik CRUD Java &amp; SQLite: Panduan Insert, Update, dan Delete</title>
        <author>
            <name>Abdan A. S.</name>
        </author>
        <link href="https://informatikainsight.netlify.app/praktik-crud-java-sqlite-jdbc.html"/>
        <id>https://informatikainsight.netlify.app/praktik-crud-java-sqlite-jdbc.html</id>
            <category term="Pemrograman"/>
            <category term="Java"/>

        <updated>2026-02-26T10:05:16+07:00</updated>
            <summary>
                <![CDATA[
                    Praktik CRUD Java &amp; SQLite: Panduan Insert, Update, dan Delete Melanjutkan pembahasan kita mengenai Koneksi Java Database (JDBC), di artikel&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <h2 data-path-to-node="1"><strong data-path-to-node="1" data-index-in-node="0">Praktik CRUD Java &amp; SQLite: Panduan Insert, Update, dan Delete</strong></h2>
<p data-path-to-node="2"><span data-path-to-node="2,0">Melanjutkan pembahasan kita mengenai Koneksi Java Database (JDBC), di artikel sebelumnya kita telah berhasil melakukan koneksi dan mengambil data. </span><span data-path-to-node="2,2"><span class="citation-828">Sekarang, kita akan mempraktikkan operasi manipulasi data untuk menambah, mengubah, dan menghapus </span><i data-path-to-node="2,2" data-index-in-node="98"><span class="citation-828">record</span></i><span class="citation-828"> pada database</span></span><span data-path-to-node="2,4">. </span>Keempat operasi dasar ini (termasuk <i data-path-to-node="3" data-index-in-node="36">Select</i>) sering dikenal di dunia pemrograman dengan singkatan <strong data-path-to-node="3" data-index-in-node="97">CRUD</strong> (<i data-path-to-node="3" data-index-in-node="103">Create, Read, Update, Delete</i>).</p>
<p id="p-rc_ea7422566ebeace6-282" data-path-to-node="2"></p>
<p id="p-rc_ea7422566ebeace6-283" data-path-to-node="4"><span data-path-to-node="4,1"><span class="citation-827">Sebagai studi kasus, kita akan menggunakan database </span><code data-path-to-node="4,1" data-index-in-node="52"><span class="citation-827">kampus.db</span></code><span class="citation-827"> dengan tabel </span><code data-path-to-node="4,1" data-index-in-node="75"><span class="citation-827">barang</span></code><span class="citation-827"> yang memiliki tiga kolom: </span><code data-path-to-node="4,1" data-index-in-node="108"><span class="citation-827">kode</span></code><span class="citation-827">, </span><code data-path-to-node="4,1" data-index-in-node="114"><span class="citation-827">namabar</span></code><span class="citation-827"> (nama barang), dan </span><code data-path-to-node="4,1" data-index-in-node="141"><span class="citation-827">harga</span></code></span><span data-path-to-node="4,3">. </span><span data-path-to-node="4,5"><span class="citation-826">Agar program lebih interaktif, kita akan menggunakan kelas </span><code data-path-to-node="4,5" data-index-in-node="59"><span class="citation-826">Scanner</span></code><span class="citation-826"> untuk menerima input langsung dari pengguna dari </span><i data-path-to-node="4,5" data-index-in-node="116"><span class="citation-826">keyboard</span></i></span><span data-path-to-node="4,7">.</span></p>
<h3 data-path-to-node="6"><strong data-path-to-node="6" data-index-in-node="0">1. Menambah Data (INSERT)</strong></h3>
<p data-path-to-node="7"><span data-path-to-node="7,0">Untuk menyisipkan data baru ke dalam tabel, kita menggunakan perintah SQL <code data-path-to-node="7,0" data-index-in-node="74">INSERT INTO</code>. </span><span data-path-to-node="7,2"><span class="citation-825">Perintah ini dieksekusi di Java menggunakan metode </span><code data-path-to-node="7,2" data-index-in-node="51"><span class="citation-825">executeUpdate()</span></code><span class="citation-825"> dari kelas </span><code data-path-to-node="7,2" data-index-in-node="78"><span class="citation-825">Statement</span></code></span><span data-path-to-node="7,4">.</span></p>
<p id="p-rc_ea7422566ebeace6-284" data-path-to-node="7"></p>
<p data-path-to-node="8">Berikut adalah implementasi program <code data-path-to-node="8" data-index-in-node="36">tambahBarang</code>:</p>
<div class="code-block ng-tns-c1953118146-256 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQmQg">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-256">
<div class="animated-opacity ng-tns-c1953118146-256">
<pre class="ng-tns-c1953118146-256"><code class="code-container formatted ng-tns-c1953118146-256" role="text" data-test-id="code-content"><span class="hljs-keyword">import</span> java.sql.*;
<span class="hljs-keyword">import</span> java.util.Scanner;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">tambahBarang</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span> <span class="hljs-params">(String[] args)</span> </span>{
        <span class="hljs-keyword">try</span> {
            Class.forName(<span class="hljs-string">"org.sqlite.JDBC"</span>);
            Connection c = DriverManager.getConnection(<span class="hljs-string">"jdbc:sqlite:D:/Data/kampus.db"</span>);
            Statement s = c.createStatement();
            
            Scanner f = <span class="hljs-keyword">new</span> Scanner (System.in);
            System.out.println(<span class="hljs-string">"Tambah Record..."</span>);
            System.out.print(<span class="hljs-string">"Kode Barang: "</span>); String ko = f.nextLine();
            System.out.print(<span class="hljs-string">"Nama Barang: "</span>); String nm = f.nextLine();
            System.out.print(<span class="hljs-string">"Harga: "</span>); <span class="hljs-keyword">int</span> hg = f.nextInt();
            
            <span class="hljs-comment">// Mengeksekusi query INSERT</span>
            s.executeUpdate(<span class="hljs-string">"insert into barang values ('"</span>+ko+<span class="hljs-string">"','"</span>+nm+<span class="hljs-string">"',"</span>+hg+<span class="hljs-string">")"</span>);
            
            System.out.println(<span class="hljs-string">"Kode \t Nama Barang \t Harga "</span>);
            System.out.println(<span class="hljs-string">"==============================="</span>);
            
            <span class="hljs-comment">// Menampilkan data terbaru</span>
            ResultSet rs = s.executeQuery(<span class="hljs-string">"select * from barang;"</span>);
            <span class="hljs-keyword">while</span> (rs.next()){
                System.out.print(rs.getString(<span class="hljs-string">"kode"</span>));
                System.out.print(<span class="hljs-string">"\t"</span> + rs.getString(<span class="hljs-string">"namabar"</span>));
                System.out.println(<span class="hljs-string">"\t\t"</span> + rs.getInt(<span class="hljs-string">"harga"</span>));
            }
        } <span class="hljs-keyword">catch</span> (Exception e) {
            System.out.println(<span class="hljs-string">"Kesalahan: "</span> + e.getMessage()); 
        }
    }
}</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="11"><strong data-path-to-node="11" data-index-in-node="0">2. Mengubah Data (UPDATE)</strong></h3>
<p data-path-to-node="12"><span data-path-to-node="12,0">Operasi pengubahan data (<i data-path-to-node="12,0" data-index-in-node="25">update</i>) digunakan ketika ada kesalahan input atau pembaruan informasi (misalnya harga barang berubah). </span><span data-path-to-node="12,2"><span class="citation-824">Kita menggunakan perintah SQL </span><code data-path-to-node="12,2" data-index-in-node="30"><span class="citation-824">UPDATE</span></code><span class="citation-824"> yang juga dieksekusi menggunakan </span><code data-path-to-node="12,2" data-index-in-node="70"><span class="citation-824">executeUpdate()</span></code></span><span data-path-to-node="12,4">.</span></p>
<p id="p-rc_ea7422566ebeace6-285" data-path-to-node="12"></p>
<p data-path-to-node="13"><span data-path-to-node="13,1"><span class="citation-823">Berikut adalah implementasi program </span><code data-path-to-node="13,1" data-index-in-node="36"><span class="citation-823">ubahBarang</span></code><span class="citation-823"> yang akan memperbarui nama dan harga barang berdasarkan </span><i data-path-to-node="13,1" data-index-in-node="103"><span class="citation-823">kode barang</span></i><span class="citation-823"> yang diinput pengguna.</span></span></p>
<div class="code-block ng-tns-c1953118146-257 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQmgg">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-257">
<div class="animated-opacity ng-tns-c1953118146-257">
<pre class="ng-tns-c1953118146-257"><code class="code-container formatted ng-tns-c1953118146-257" role="text" data-test-id="code-content"><span class="hljs-keyword">import</span> java.sql.*;
<span class="hljs-keyword">import</span> java.util.Scanner;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ubahBarang</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span> <span class="hljs-params">(String[] args)</span> </span>{
        <span class="hljs-keyword">try</span> {
            Class.forName(<span class="hljs-string">"org.sqlite.JDBC"</span>);
            Connection c = DriverManager.getConnection(<span class="hljs-string">"jdbc:sqlite:D:/Data/kampus.db"</span>);
            Statement s = c.createStatement();
            
            Scanner f = <span class="hljs-keyword">new</span> Scanner(System.in);
            System.out.println(<span class="hljs-string">"Ubah Record..."</span>);
            System.out.print(<span class="hljs-string">"Kode Barang yang ingin diubah: "</span>); String ko = f.nextLine();
            System.out.print(<span class="hljs-string">"Nama Barang Baru: "</span>); String nm = f.nextLine();
            System.out.print(<span class="hljs-string">"Harga Baru: "</span>); <span class="hljs-keyword">int</span> hg = f.nextInt();
            
            <span class="hljs-comment">// Mengeksekusi query UPDATE</span>
            s.executeUpdate(<span class="hljs-string">"update barang set namabar='"</span>+nm+<span class="hljs-string">"', harga="</span>+hg+<span class="hljs-string">" where kode='"</span>+ko+<span class="hljs-string">"'"</span>);
            
            System.out.println(<span class="hljs-string">"Kode \t Nama Barang \t Harga "</span>);
            System.out.println(<span class="hljs-string">"==============================="</span>);
            
            ResultSet rs = s.executeQuery(<span class="hljs-string">"select * from barang;"</span>);
            <span class="hljs-keyword">while</span> (rs.next()){
                System.out.print(rs.getString(<span class="hljs-string">"kode"</span>));
                System.out.print(<span class="hljs-string">"\t"</span> + rs.getString(<span class="hljs-string">"namabar"</span>));
                System.out.println(<span class="hljs-string">"\t\t"</span> + rs.getInt(<span class="hljs-string">"harga"</span>));
            }
        } <span class="hljs-keyword">catch</span> (Exception e) {
            System.out.println(<span class="hljs-string">"Kesalahan: "</span> + e.getMessage());
        }
    }
}</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="16"><strong data-path-to-node="16" data-index-in-node="0">3. Menghapus Data (DELETE)</strong></h3>
<p data-path-to-node="17"><span data-path-to-node="17,0">Operasi terakhir dari CRUD adalah penghapusan data. </span><span data-path-to-node="17,2"><span class="citation-822">Sama seperti operasi </span><i data-path-to-node="17,2" data-index-in-node="21"><span class="citation-822">update</span></i><span class="citation-822">, operasi </span><code data-path-to-node="17,2" data-index-in-node="37"><span class="citation-822">DELETE</span></code><span class="citation-822"> sangat bergantung pada klausa </span><code data-path-to-node="17,2" data-index-in-node="74"><span class="citation-822">WHERE</span></code><span class="citation-822"> untuk memastikan hanya </span><i data-path-to-node="17,2" data-index-in-node="103"><span class="citation-822">record</span></i><span class="citation-822"> tertentu yang terhapus</span></span><span data-path-to-node="17,4">.</span></p>
<p id="p-rc_ea7422566ebeace6-287" data-path-to-node="17"></p>
<p data-path-to-node="18"><span data-path-to-node="18,1"><span class="citation-821">Berikut adalah implementasi program </span><code data-path-to-node="18,1" data-index-in-node="36"><span class="citation-821">hapusBarang</span></code><span class="citation-821"> yang meminta kode barang untuk dihapus dari database</span></span><span data-path-to-node="18,3">:</span></p>
<div class="code-block ng-tns-c1953118146-258 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQmwg">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-258">
<div class="animated-opacity ng-tns-c1953118146-258">
<pre class="ng-tns-c1953118146-258"><code class="code-container formatted ng-tns-c1953118146-258" role="text" data-test-id="code-content"><span class="hljs-keyword">import</span> java.sql.*;
<span class="hljs-keyword">import</span> java.util.Scanner;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">hapusBarang</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span> <span class="hljs-params">(String[] args)</span> </span>{
        <span class="hljs-keyword">try</span> {
            Class.forName(<span class="hljs-string">"org.sqlite.JDBC"</span>);
            Connection c = DriverManager.getConnection(<span class="hljs-string">"jdbc:sqlite:D:/Data/kampus.db"</span>);
            Statement s = c.createStatement();
            
            Scanner f = <span class="hljs-keyword">new</span> Scanner (System.in);
            System.out.println(<span class="hljs-string">"Hapus Record..."</span>);
            System.out.print(<span class="hljs-string">"Kode Barang yang ingin dihapus: "</span>); String ko = f.nextLine();
            
            <span class="hljs-comment">// Mengeksekusi query DELETE</span>
            s.executeUpdate(<span class="hljs-string">"delete from barang where kode='"</span>+ko+<span class="hljs-string">"'"</span>);
            
            System.out.println(<span class="hljs-string">"Kode \t Nama Barang \t Harga "</span>);
            System.out.println(<span class="hljs-string">"==============================="</span>);
            
            ResultSet rs = s.executeQuery(<span class="hljs-string">"select * from barang;"</span>);
            <span class="hljs-keyword">while</span> (rs.next()){
                System.out.print(rs.getString(<span class="hljs-string">"kode"</span>));
                System.out.print(<span class="hljs-string">"\t"</span> + rs.getString(<span class="hljs-string">"namabar"</span>));
                System.out.println(<span class="hljs-string">"\t\t"</span> + rs.getInt(<span class="hljs-string">"harga"</span>));
            }
        } <span class="hljs-keyword">catch</span> (Exception e) {
            System.out.println(<span class="hljs-string">"Kesalahan: "</span> + e.getMessage());
        }
    }
}</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="21"><strong data-path-to-node="21" data-index-in-node="0">Kesimpulan dan Tantangan</strong></h3>
<p data-path-to-node="22">Dengan mempraktikkan operasi <strong data-path-to-node="22" data-index-in-node="29">Insert, Update,</strong> dan <strong data-path-to-node="22" data-index-in-node="49">Delete</strong>, Anda telah menguasai keseluruhan siklus dasar manipulasi data menggunakan JDBC di Java. Metode <code data-path-to-node="22" data-index-in-node="152">executeUpdate()</code> adalah kunci untuk menjalankan semua perintah SQL yang mengubah status dari database.</p>
<p data-path-to-node="24"><span data-path-to-node="24,0"><strong data-path-to-node="24,0" data-index-in-node="0"><span class="citation-820">Tantangan Akhir:</span></strong><span class="citation-820"> Berdasarkan ketiga program terpisah yang telah kita buat di atas, buatlah satu program Java terpadu yang memiliki </span><strong data-path-to-node="24,0" data-index-in-node="131"><span class="citation-820">Menu Interaktif</span></strong></span><span data-path-to-node="24,2">. Program harus memiliki struktur pilihan (<i data-path-to-node="24,2" data-index-in-node="43">switch-case</i>) yang memungkinkan pengguna memilih menu:</span></p>
<p id="p-rc_ea7422566ebeace6-289" data-path-to-node="24"></p>
<ul>
<li data-path-to-node="25,0,0"><span data-path-to-node="25,0,0,1"><span class="citation-819">Menampilkan Record </span></span></li>
<li data-path-to-node="25,1,0"><span data-path-to-node="25,1,0,1"><span class="citation-818">Menambah Record </span></span></li>
<li data-path-to-node="25,2,0"><span data-path-to-node="25,2,0,1"><span class="citation-817">Merubah Record </span></span></li>
<li data-path-to-node="25,3,0"><span data-path-to-node="25,3,0,1"><span class="citation-816">Menghapus Record </span></span></li>
<li data-path-to-node="25,4,0">Keluar dari program.</li>
</ul>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Koneksi Java Database (JDBC): Panduan Lengkap Integrasi SQLite</title>
        <author>
            <name>Abdan A. S.</name>
        </author>
        <link href="https://informatikainsight.netlify.app/koneksi-java-database-jdbc-sqlite.html"/>
        <id>https://informatikainsight.netlify.app/koneksi-java-database-jdbc-sqlite.html</id>
            <category term="Pemrograman"/>
            <category term="Java"/>

        <updated>2026-02-26T09:58:35+07:00</updated>
            <summary>
                <![CDATA[
                    Membangun aplikasi yang menyimpan data secara permanen adalah keterampilan esensial dalam pengembangan perangkat lunak. Dalam ekosistem Java, proses untuk menghubungkan&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <p data-path-to-node="2">Membangun aplikasi yang menyimpan data secara permanen adalah keterampilan esensial dalam pengembangan perangkat lunak. Dalam ekosistem Java, proses untuk menghubungkan aplikasi dengan database diatur oleh sebuah teknologi standar yang disebut <strong data-path-to-node="2" data-index-in-node="244">JDBC</strong>.</p>
<h3 data-path-to-node="3"><strong data-path-to-node="3" data-index-in-node="0">Apa Itu JDBC?</strong></h3>
<p data-path-to-node="4"><span data-path-to-node="4,1"><span class="citation-789">JDBC singkatan dari </span><i data-path-to-node="4,1" data-index-in-node="20"><span class="citation-789">Application Programming Interface (API)</span></i><span class="citation-789"> yang menyediakan fungsi-fungsi dasar untuk akses data</span></span><span data-path-to-node="4,3">. </span><span data-path-to-node="4,5"><span class="citation-788">JDBC API terdiri atas sejumlah </span><code data-path-to-node="4,5" data-index-in-node="31"><span class="citation-788">class</span></code><span class="citation-788"> dan </span><code data-path-to-node="4,5" data-index-in-node="41"><span class="citation-788">interface</span></code><span class="citation-788"> (yang terdapat pada </span><i data-path-to-node="4,5" data-index-in-node="71"><span class="citation-788">package</span></i> <code data-path-to-node="4,5" data-index-in-node="79"><span class="citation-788">java.sql</span></code><span class="citation-788">) yang digunakan untuk menulis aplikasi database menggunakan Java</span></span><span data-path-to-node="4,7">.</span></p>
<p id="p-rc_6e4ea48dbecb3a9b-260" data-path-to-node="4"></p>
<p data-path-to-node="5"><span data-path-to-node="5,1"><span class="citation-787">JDBC memungkinkan kita untuk membuat aplikasi Java yang melakukan tiga hal utama</span></span><span data-path-to-node="5,3">:</span></p>
<p id="p-rc_6e4ea48dbecb3a9b-261" data-path-to-node="5"></p>
<ol>
<li data-path-to-node="6,0,0">Melakukan koneksi ke sumber data.</li>
<li data-path-to-node="6,1,0">Mengirimkan instruksi (<i data-path-to-node="6,1,0" data-index-in-node="23">query</i> dan <i data-path-to-node="6,1,0" data-index-in-node="33">statement</i>) ke database.</li>
<li id="p-rc_6e4ea48dbecb3a9b-262" data-path-to-node="6,2,0"><span data-path-to-node="6,2,0,1"><span class="citation-786">Menerima dan mengolah data balasan (</span><i data-path-to-node="6,2,0,1" data-index-in-node="36"><span class="citation-786">result set</span></i><span class="citation-786">) yang diperoleh dari database</span></span><span data-path-to-node="6,2,0,3">.</span></li>
</ol>
<h3 data-path-to-node="8"><strong data-path-to-node="8" data-index-in-node="0">Database Driver (JDBC Driver)</strong></h3>
<p data-path-to-node="9">Java didesain agar bisa terhubung ke hampir semua jenis <i data-path-to-node="9" data-index-in-node="56">Relational Database Management System</i> (RDBMS). Namun, untuk berbicara dengan database tertentu (seperti SQLite, MySQL, atau Oracle), Java membutuhkan "penerjemah" khusus.</p>
<p id="p-rc_6e4ea48dbecb3a9b-263" data-path-to-node="10"><span data-path-to-node="10,0">Penerjemah inilah yang disebut <strong data-path-to-node="10,0" data-index-in-node="31">Database Driver</strong>. </span><span data-path-to-node="10,2"><span class="citation-785">Database driver bersifat spesifik untuk setiap jenis sumber data</span></span><span data-path-to-node="10,4">. </span><span data-path-to-node="10,6"><span class="citation-784">Untuk aplikasi Java, </span><i data-path-to-node="10,6" data-index-in-node="21"><span class="citation-784">software library</span></i><span class="citation-784"> ini disebut sebagai </span><strong data-path-to-node="10,6" data-index-in-node="58"><span class="citation-784">JDBC Driver</span></strong></span><span data-path-to-node="10,8">. Anda harus mengunduh file <code data-path-to-node="10,8" data-index-in-node="28">.jar</code> dari JDBC Driver yang sesuai dengan database yang Anda gunakan.</span></p>
<h3 data-path-to-node="12"><strong data-path-to-node="12" data-index-in-node="0">Langkah 1: Membuat Koneksi</strong></h3>
<p data-path-to-node="13"><span data-path-to-node="13,1"><span class="citation-783">Melakukan koneksi ke database melibatkan dua langkah fundamental: </span><i data-path-to-node="13,1" data-index-in-node="66"><span class="citation-783">me-load driver</span></i><span class="citation-783"> dan </span><i data-path-to-node="13,1" data-index-in-node="85"><span class="citation-783">membuat koneksi itu sendiri</span></i></span><span data-path-to-node="13,3">.</span></p>
<p id="p-rc_6e4ea48dbecb3a9b-264" data-path-to-node="13"></p>
<p data-path-to-node="14"><span data-path-to-node="14,0"><strong data-path-to-node="14,0" data-index-in-node="0">1. Meload Driver</strong> </span><span data-path-to-node="14,2"><span class="citation-782">Setelah meletakkan file </span><code data-path-to-node="14,2" data-index-in-node="24"><span class="citation-782">.jar</span></code><span class="citation-782"> database driver ke dalam </span><i data-path-to-node="14,2" data-index-in-node="54"><span class="citation-782">classpath</span></i><span class="citation-782"> proyek Anda, Anda perlu me-load driver tersebut ke dalam program menggunakan metode </span><code data-path-to-node="14,2" data-index-in-node="148"><span class="citation-782">Class.forName</span></code></span><span data-path-to-node="14,4">.</span></p>
<div class="code-block ng-tns-c1953118146-233 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQnAc">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-233">
<div class="animated-opacity ng-tns-c1953118146-233">
<pre class="ng-tns-c1953118146-233"><code class="code-container formatted ng-tns-c1953118146-233" role="text" data-test-id="code-content">Class.forName(<span class="hljs-string">"org.sqlite.JDBC"</span>); <span class="hljs-comment">// Nama class driver untuk SQLite</span>
</code></pre>
</div>
</div>
</div>
<p id="p-rc_6e4ea48dbecb3a9b-266" data-path-to-node="16"><span data-path-to-node="16,1"><span class="citation-781">Memanggil metode ini secara otomatis membuat </span><i data-path-to-node="16,1" data-index-in-node="45"><span class="citation-781">instance</span></i><span class="citation-781"> dari database driver tanpa perlu menggunakan </span><i data-path-to-node="16,1" data-index-in-node="99"><span class="citation-781">statement</span></i> <code data-path-to-node="16,1" data-index-in-node="109"><span class="citation-781">new</span></code></span><span data-path-to-node="16,3">.</span></p>
<p data-path-to-node="17"><span data-path-to-node="17,0"><strong data-path-to-node="17,0" data-index-in-node="0">2. Membuka Koneksi</strong> </span><span data-path-to-node="17,2"><span class="citation-780">Langkah berikutnya adalah membuat koneksi ke database menggunakan driver yang sudah diload sebelumnya</span></span><span data-path-to-node="17,4">. Hal ini dilakukan dengan memanggil metode <code data-path-to-node="17,4" data-index-in-node="44">getConnection</code> dari kelas <code data-path-to-node="17,4" data-index-in-node="69">DriverManager</code>.</span></p>
<div class="code-block ng-tns-c1953118146-234 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQnwc">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-234">
<div class="animated-opacity ng-tns-c1953118146-234">
<pre class="ng-tns-c1953118146-234"><code class="code-container formatted ng-tns-c1953118146-234" role="text" data-test-id="code-content">Connection conn = DriverManager.getConnection(<span class="hljs-string">"jdbc:sqlite:latihan.db"</span>);</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="20"><strong data-path-to-node="20" data-index-in-node="0">Langkah 2: Mengambil dan Memanipulasi Data</strong></h3>
<p data-path-to-node="21"><span data-path-to-node="21,0">Setelah sukses terhubung, kita dapat mulai mengirimkan perintah SQL. </span><span data-path-to-node="21,2"><span class="citation-779">Untuk melakukannya, kita memerlukan perantara berupa </span><i data-path-to-node="21,2" data-index-in-node="53"><span class="citation-779">instance</span></i><span class="citation-779"> dari class </span><strong data-path-to-node="21,2" data-index-in-node="73"><code data-path-to-node="21,2" data-index-in-node="73"><span class="citation-779">Statement</span></code></strong></span><span data-path-to-node="21,4">.</span></p>
<p id="p-rc_6e4ea48dbecb3a9b-268" data-path-to-node="21"></p>
<p data-path-to-node="22"><strong data-path-to-node="22" data-index-in-node="0">1. Eksekusi Perintah DDL dan DML (Create, Insert, Update, Delete)</strong> Untuk mengeksekusi perintah SQL yang mengubah struktur atau memanipulasi isi data secara sepihak, kita menggunakan metode <code data-path-to-node="22" data-index-in-node="188">executeUpdate</code>.</p>
<div class="code-block ng-tns-c1953118146-235 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQoQc">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-235">
<div class="animated-opacity ng-tns-c1953118146-235">
<pre class="ng-tns-c1953118146-235"><code class="code-container formatted ng-tns-c1953118146-235" role="text" data-test-id="code-content">Statement st = con.createStatement();
st.executeUpdate(<span class="hljs-string">"create table mhs (npm integer, nama varchar(20));"</span>);
st.executeUpdate(<span class="hljs-string">"insert into mhs values (123, 'Budi');"</span>);
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="24"><span data-path-to-node="24,0"><strong data-path-to-node="24,0" data-index-in-node="0">2. Mengambil Data (Select)</strong> Proses pengambilan data menggunakan metode <code data-path-to-node="24,0" data-index-in-node="70">executeQuery</code>. </span><span data-path-to-node="24,2"><span class="citation-778">Data hasil eksekusi ini tidak bisa langsung digunakan; ia harus ditampung ke dalam objek bertipe </span><strong data-path-to-node="24,2" data-index-in-node="97"><code data-path-to-node="24,2" data-index-in-node="97"><span class="citation-778">ResultSet</span></code></strong></span><span data-path-to-node="24,4">.</span></p>
<div class="code-block ng-tns-c1953118146-236 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQowc">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-236">
<div class="animated-opacity ng-tns-c1953118146-236">
<pre class="ng-tns-c1953118146-236"><code class="code-container formatted ng-tns-c1953118146-236" role="text" data-test-id="code-content">ResultSet rs = st.executeQuery(<span class="hljs-string">"select * from mhs;"</span>);
</code></pre>
</div>
</div>
</div>
<p id="p-rc_6e4ea48dbecb3a9b-270" data-path-to-node="26"><span data-path-to-node="26,0">Objek <code data-path-to-node="26,0" data-index-in-node="6">ResultSet</code> meletakkan "kursornya" sebelum baris pertama data. </span><span data-path-to-node="26,2"><span class="citation-777">Untuk memindahkan kursor dan membaca data baris demi baris, kita menggunakan metode </span><code data-path-to-node="26,2" data-index-in-node="84"><span class="citation-777">rs.next()</span></code><span class="citation-777"> yang sering dikombinasikan dengan perulangan </span><code data-path-to-node="26,2" data-index-in-node="139"><span class="citation-777">while</span></code></span><span data-path-to-node="26,4">.</span></p>
<h3 data-path-to-node="27"><strong data-path-to-node="27" data-index-in-node="0">Contoh Program Lengkap: Menampilkan Tabel Barang</strong></h3>
<p data-path-to-node="28">Berikut adalah implementasi lengkap untuk membaca dan menampilkan isi tabel "barang" dari database SQLite kampus.db.</p>
<div class="code-block ng-tns-c1953118146-237 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQpQc">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-237">
<div class="animated-opacity ng-tns-c1953118146-237">
<pre class="ng-tns-c1953118146-237"><code class="code-container formatted ng-tns-c1953118146-237" role="text" data-test-id="code-content"><span class="hljs-keyword">import</span> java.sql.*;

<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DBTest1</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String args[])</span> </span>{
        <span class="hljs-keyword">try</span> {
            <span class="hljs-comment">// 1. Meload Driver</span>
            Class.forName(<span class="hljs-string">"org.sqlite.JDBC"</span>);
            
            <span class="hljs-comment">// 2. Membuat Koneksi (pastikan path database benar)</span>
            Connection koneksi = DriverManager.getConnection(<span class="hljs-string">"jdbc:sqlite:D:/Data/kampus.db"</span>);
            
            <span class="hljs-comment">// 3. Membuat Statement</span>
            Statement stat = koneksi.createStatement();
            
            <span class="hljs-comment">// 4. Mengeksekusi Query Select</span>
            ResultSet set = stat.executeQuery(<span class="hljs-string">"select * from barang"</span>);
            
            <span class="hljs-comment">// 5. Membaca dan Menampilkan Data</span>
            System.out.println(<span class="hljs-string">"KODE\tNAMA BARANG\tHARGA"</span>);
            <span class="hljs-keyword">while</span>(set.next()){
                String a = set.getString(<span class="hljs-string">"kode"</span>);
                System.out.print(a + <span class="hljs-string">"\t"</span>);
                
                String b = set.getString(<span class="hljs-string">"namabar"</span>);
                System.out.print(b + <span class="hljs-string">"\t\t"</span>);
                
                <span class="hljs-keyword">int</span> c = set.getInt(<span class="hljs-string">"harga"</span>);
                System.out.println(c);
            }
        }
        <span class="hljs-keyword">catch</span> (Exception e) {
            System.err.println(<span class="hljs-string">"Error: "</span> + e.getMessage()); 
        }
    }
}</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="30"><strong data-path-to-node="30" data-index-in-node="0">Kesimpulan</strong></h3>
<p data-path-to-node="31">Menghubungkan aplikasi Java dengan database mungkin terlihat kompleks pada awalnya. Namun, dengan memahami konsep dasar JDBC—yakni me-load driver, membuka koneksi, menyiapkan <i data-path-to-node="31" data-index-in-node="175">statement</i>, dan mengolah <code data-path-to-node="31" data-index-in-node="199">ResultSet</code>—Anda memiliki pondasi untuk membangun aplikasi sistem informasi berskala penuh yang andal dan dinamis.</p>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Tutorial SQLite Dasar: Pengenalan dan Praktik Command Prompt</title>
        <author>
            <name>Abdan A. S.</name>
        </author>
        <link href="https://informatikainsight.netlify.app/tutorial-sqlite-dasar-command-prompt.html"/>
        <id>https://informatikainsight.netlify.app/tutorial-sqlite-dasar-command-prompt.html</id>
            <category term="Pemrograman"/>
            <category term="Java"/>

        <updated>2026-02-26T09:50:49+07:00</updated>
            <summary>
                <![CDATA[
                    Setelah memahami konsep dasar SQL pada materi sebelumnya, sekarang kita akan mempraktikkannya menggunakan SQLite. SQLite adalah sebuah Relational Database Management&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <p data-path-to-node="2">Setelah memahami konsep dasar SQL pada materi sebelumnya, sekarang kita akan mempraktikkannya menggunakan <strong data-path-to-node="2" data-index-in-node="106">SQLite</strong>.</p>
<p id="p-rc_aaffa78bea93dffb-240" data-path-to-node="3"><span data-path-to-node="3,1"><span class="citation-752">SQLite adalah sebuah </span><i data-path-to-node="3,1" data-index-in-node="21"><span class="citation-752">Relational Database Management Server</span></i><span class="citation-752"> (RDBMS) alternatif yang sangat portabel (tidak perlu diinstal), cepat, gratis, dan banyak didukung oleh berbagai bahasa pemrograman</span></span><span data-path-to-node="3,3">.</span></p>
<h3 data-path-to-node="5"><strong data-path-to-node="5" data-index-in-node="0">Mengapa Memilih SQLite?</strong></h3>
<p data-path-to-node="6"><span data-path-to-node="6,1"><span class="citation-751">Jika dibandingkan dengan RDBMS raksasa seperti MySQL, Oracle, atau PostgreSQL</span></span><span data-path-to-node="6,3">, SQLite memiliki keunggulan tersendiri, terutama untuk pengembangan dan aplikasi skala kecil hingga menengah:</span></p>
<p id="p-rc_aaffa78bea93dffb-241" data-path-to-node="6"></p>
<ul>
<li data-path-to-node="7,0,1"><span data-path-to-node="7,0,1,0"><strong data-path-to-node="7,0,1,0" data-index-in-node="0"><span class="citation-750">Portabel dan Tanpa Instalasi:</span></strong><span class="citation-750"> Anda hanya membutuhkan satu file </span><code data-path-to-node="7,0,1,0" data-index-in-node="63"><span class="citation-750">sqlite3.exe</span></code></span><span data-path-to-node="7,0,1,2">.</span></li>
<li data-path-to-node="7,1,1"><span data-path-to-node="7,1,1,0"><strong data-path-to-node="7,1,1,0" data-index-in-node="0"><span class="citation-749">Konsep </span><i data-path-to-node="7,1,1,0" data-index-in-node="7"><span class="citation-749">Flat File</span></i><span class="citation-749">:</span></strong><span class="citation-749"> Satu database disimpan secara utuh dalam satu file utuh, sehingga pengaksesannya sangat cepat</span></span><span data-path-to-node="7,1,1,2">.</span></li>
<li data-path-to-node="7,2,1"><span data-path-to-node="7,2,1,0"><strong data-path-to-node="7,2,1,0" data-index-in-node="0"><span class="citation-748">Bahasa Query Standar:</span></strong><span class="citation-748"> SQLite menggunakan </span><i data-path-to-node="7,2,1,0" data-index-in-node="41"><span class="citation-748">Query Language</span></i><span class="citation-748"> yang mirip dengan RDBMS lain, sehingga memudahkan adaptasi</span></span><span data-path-to-node="7,2,1,2">. </span><span data-path-to-node="7,2,1,4"><span class="citation-747">Meskipun demikian, terdapat beberapa perbedaan kecil dan perintah spesifik yang mungkin tidak didukung</span></span><span data-path-to-node="7,2,1,6">.</span></li>
</ul>
<div class="source-inline-chip-container ng-star-inserted">
<h3 data-path-to-node="9"><strong data-path-to-node="9" data-index-in-node="0">Cara Memulai SQLite di Windows</strong></h3>
<p data-path-to-node="10"><span data-path-to-node="10,1"><span class="citation-746">Pada panduan ini, kita akan fokus menggunakan SQLite melalui Command Prompt (CMD) di sistem operasi Windows</span></span><span data-path-to-node="10,3">.</span></p>
<p id="p-rc_aaffa78bea93dffb-245" data-path-to-node="10"></p>
<ol>
<li data-path-to-node="11,0,0">Pastikan Anda telah mengunduh file <code data-path-to-node="11,0,0" data-index-in-node="35">sqlite3.exe</code>.</li>
<li data-path-to-node="11,1,1"><span data-path-to-node="11,1,1,0"><i data-path-to-node="11,1,1,0" data-index-in-node="0"><span class="citation-745">Copy</span></i><span class="citation-745"> (salin) file </span><code data-path-to-node="11,1,1,0" data-index-in-node="18"><span class="citation-745">sqlite3.exe</span></code><span class="citation-745"> tersebut ke dalam folder </span><code data-path-to-node="11,1,1,0" data-index-in-node="55"><span class="citation-745">C:\Windows\System32</span></code><span class="citation-745"> agar dapat diakses dari mana saja melalui Command Prompt</span></span><span data-path-to-node="11,1,1,2">.</span></li>
<li id="p-rc_aaffa78bea93dffb-247" data-path-to-node="11,2,0"><span data-path-to-node="11,2,0,1"><span class="citation-744">Buka Command Prompt, lalu tentukan lokasi/folder di mana Anda ingin menyimpan file database tersebut</span></span><span data-path-to-node="11,2,0,3">.</span></li>
</ol>
<h3 data-path-to-node="13"><strong data-path-to-node="13" data-index-in-node="0">Praktik Dasar SQLite (CRUD)</strong></h3>
<p data-path-to-node="14"><span data-path-to-node="14,0">Mari kita mulai membuat dan memanipulasi data menggunakan SQLite. Jika file database belum ada, SQLite akan otomatis membuatnya untuk Anda. </span><span data-path-to-node="14,2"><span class="citation-743">Jika sudah ada, SQLite akan langsung mengaksesnya</span></span><span data-path-to-node="14,4">.</span></p>
<p id="p-rc_aaffa78bea93dffb-248" data-path-to-node="14"></p>
<h4 data-path-to-node="15"><strong data-path-to-node="15" data-index-in-node="0">1. Membuat Database dan Tabel</strong></h4>
<p data-path-to-node="16">Ketikkan perintah berikut di CMD untuk membuat database bernama <code data-path-to-node="16" data-index-in-node="64">kampus.db</code>.</p>
<div class="code-block ng-tns-c1953118146-197 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQqQY">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-197">
<div class="animated-opacity ng-tns-c1953118146-197">
<pre class="ng-tns-c1953118146-197"><code class="code-container formatted ng-tns-c1953118146-197" role="text" data-test-id="code-content">sqlite3 kampus.db</code></pre>
</div>
</div>
</div>
<p data-path-to-node="18">Setelah masuk ke <i data-path-to-node="18" data-index-in-node="17">prompt</i> <code data-path-to-node="18" data-index-in-node="24">sqlite&gt;</code>, kita bisa membuat tabel baru. Mari kita buat tabel <code data-path-to-node="18" data-index-in-node="84">mahasiswa</code>.</p>
<div class="code-block ng-tns-c1953118146-198 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQqgY">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-198">
<div class="animated-opacity ng-tns-c1953118146-198">
<pre class="ng-tns-c1953118146-198"><code class="code-container formatted ng-tns-c1953118146-198" role="text" data-test-id="code-content"><span class="hljs-keyword">create</span> <span class="hljs-keyword">table</span> mahasiswa (npm <span class="hljs-type">varchar</span>(<span class="hljs-number">15</span>), nama <span class="hljs-type">varchar</span>(<span class="hljs-number">20</span>), nilai <span class="hljs-type">integer</span>);</code></pre>
</div>
</div>
</div>
<p data-path-to-node="20">Untuk melihat daftar tabel yang ada di dalam database Anda, gunakan perintah <code data-path-to-node="20" data-index-in-node="77">.table</code>.</p>
<div class="code-block ng-tns-c1953118146-199 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQqwY">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-199">
<div class="animated-opacity ng-tns-c1953118146-199">
<pre class="ng-tns-c1953118146-199"><code class="code-container formatted ng-tns-c1953118146-199" role="text" data-test-id="code-content">.<span class="hljs-keyword">table</span></code></pre>
</div>
</div>
</div>
<h4 data-path-to-node="22"><strong data-path-to-node="22" data-index-in-node="0">2. Menyisipkan Data (INSERT)</strong></h4>
<p data-path-to-node="23">Gunakan perintah <code data-path-to-node="23" data-index-in-node="17">INSERT INTO</code> untuk menambahkan <i data-path-to-node="23" data-index-in-node="47">record</i> atau baris data baru ke dalam tabel.</p>
<div class="code-block ng-tns-c1953118146-200 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQrAY">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-200">
<div class="animated-opacity ng-tns-c1953118146-200">
<pre class="ng-tns-c1953118146-200"><code class="code-container formatted ng-tns-c1953118146-200" role="text" data-test-id="code-content"><span class="hljs-keyword">insert</span> <span class="hljs-keyword">into</span> mahasiswa <span class="hljs-keyword">values</span> (<span class="hljs-string">'111'</span>,<span class="hljs-string">'Aji'</span>,<span class="hljs-number">88</span>);
<span class="hljs-keyword">insert</span> <span class="hljs-keyword">into</span> mahasiswa <span class="hljs-keyword">values</span> (<span class="hljs-string">'112'</span>,<span class="hljs-string">'Ari'</span>,<span class="hljs-number">70</span>);
<span class="hljs-keyword">insert</span> <span class="hljs-keyword">into</span> mahasiswa <span class="hljs-keyword">values</span> (<span class="hljs-string">'113'</span>,<span class="hljs-string">'Disti'</span>,<span class="hljs-number">90</span>);
<span class="hljs-keyword">insert</span> <span class="hljs-keyword">into</span> mahasiswa <span class="hljs-keyword">values</span> (<span class="hljs-string">'114'</span>,<span class="hljs-string">'Zahra'</span>,<span class="hljs-number">80</span>);</code></pre>
</div>
</div>
</div>
<h4 data-path-to-node="25"><strong data-path-to-node="25" data-index-in-node="0">3. Menampilkan Data (SELECT)</strong></h4>
<p data-path-to-node="26"><span data-path-to-node="26,0">Untuk melihat data yang telah dimasukkan, kita menggunakan perintah <code data-path-to-node="26,0" data-index-in-node="68">SELECT</code>. </span><span data-path-to-node="26,2"><span class="citation-742">Agar tampilan tabel di </span><i data-path-to-node="26,2" data-index-in-node="23"><span class="citation-742">command prompt</span></i><span class="citation-742"> lebih rapi (seperti kolom pada umumnya), aktifkan fitur </span><i data-path-to-node="26,2" data-index-in-node="94"><span class="citation-742">header</span></i><span class="citation-742"> dan mode kolom terlebih dahulu</span></span><span data-path-to-node="26,4">.</span></p>
<div class="code-block ng-tns-c1953118146-201 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQrgY">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-201">
<div class="animated-opacity ng-tns-c1953118146-201">
<pre class="ng-tns-c1953118146-201"><code class="code-container formatted ng-tns-c1953118146-201" role="text" data-test-id="code-content">.header <span class="hljs-keyword">on</span>
.mode <span class="hljs-keyword">column</span>
<span class="hljs-keyword">select</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">from</span> mahasiswa;</code></pre>
</div>
</div>
</div>
<p data-path-to-node="28">Anda juga bisa menyaring data menggunakan kondisi <code data-path-to-node="28" data-index-in-node="50">WHERE</code> atau operator <code data-path-to-node="28" data-index-in-node="70">LIKE</code>.</p>
<div class="code-block ng-tns-c1953118146-202 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQrwY">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-202">
<div class="animated-opacity ng-tns-c1953118146-202">
<pre class="ng-tns-c1953118146-202"><code class="code-container formatted ng-tns-c1953118146-202" role="text" data-test-id="code-content"><span class="hljs-comment">-- Menampilkan nama mahasiswa dengan nilai di atas 85</span>
<span class="hljs-keyword">select</span> nama <span class="hljs-keyword">from</span> mahasiswa <span class="hljs-keyword">where</span> nilai<span class="hljs-operator">&gt;</span><span class="hljs-number">85</span>;

<span class="hljs-comment">-- Menampilkan mahasiswa yang namanya diawali dengan huruf 'A'</span>
<span class="hljs-keyword">select</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">from</span> mahasiswa <span class="hljs-keyword">where</span> nama <span class="hljs-keyword">like</span> <span class="hljs-string">'A%'</span>;</code></pre>
</div>
</div>
</div>
<h4 data-path-to-node="30"><strong data-path-to-node="30" data-index-in-node="0">4. Mengubah Data (UPDATE) dan Menambah Kolom (ALTER)</strong></h4>
<p data-path-to-node="31">Jika ada data yang salah atau perlu diperbarui, gunakan <code data-path-to-node="31" data-index-in-node="56">UPDATE</code>. Misalnya, kita ingin mengubah nilai mahasiswa bernama Ari menjadi 75.</p>
<div class="code-block ng-tns-c1953118146-203 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQsAY">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-203">
<div class="animated-opacity ng-tns-c1953118146-203">
<pre class="ng-tns-c1953118146-203"><code class="code-container formatted ng-tns-c1953118146-203" role="text" data-test-id="code-content">update mahasiswa <span class="hljs-keyword">set</span> nilai<span class="hljs-operator">=</span><span class="hljs-number">75</span> <span class="hljs-keyword">where</span> nama<span class="hljs-operator">=</span><span class="hljs-string">'Ari'</span>;</code></pre>
</div>
</div>
</div>
<p data-path-to-node="33">Jika di tengah jalan Anda menyadari butuh kolom baru (misalnya kolom <code data-path-to-node="33" data-index-in-node="69">kota</code>), Anda bisa menambahkannya tanpa harus menghapus tabel menggunakan <code data-path-to-node="33" data-index-in-node="141">ALTER TABLE</code>.</p>
<div class="code-block ng-tns-c1953118146-204 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQsQY">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-204">
<div class="animated-opacity ng-tns-c1953118146-204">
<pre class="ng-tns-c1953118146-204"><code class="code-container formatted ng-tns-c1953118146-204" role="text" data-test-id="code-content"><span class="hljs-keyword">alter</span> <span class="hljs-keyword">table</span> mahasiswa <span class="hljs-keyword">add</span> kota <span class="hljs-type">varchar</span>(<span class="hljs-number">20</span>);</code></pre>
</div>
</div>
</div>
<h4 data-path-to-node="35"><strong data-path-to-node="35" data-index-in-node="0">5. Menghapus Data (DELETE) dan Menghapus Tabel (DROP)</strong></h4>
<p data-path-to-node="36">Untuk menghapus <i data-path-to-node="36" data-index-in-node="16">record</i> tertentu, gunakan perintah <code data-path-to-node="36" data-index-in-node="50">DELETE</code>. Hati-hati, selalu gunakan <code data-path-to-node="36" data-index-in-node="84">WHERE</code> agar tidak menghapus seluruh isi tabel.</p>
<div class="code-block ng-tns-c1953118146-205 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQsgY">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-205">
<div class="animated-opacity ng-tns-c1953118146-205">
<pre class="ng-tns-c1953118146-205"><code class="code-container formatted ng-tns-c1953118146-205" role="text" data-test-id="code-content"><span class="hljs-keyword">delete</span> <span class="hljs-keyword">from</span> mahasiswa <span class="hljs-keyword">where</span> nama<span class="hljs-operator">=</span><span class="hljs-string">'Disti'</span>;</code></pre>
</div>
</div>
</div>
<p data-path-to-node="38">Terakhir, jika Anda ingin menghapus tabel secara permanen beserta seluruh strukturnya, gunakan perintah <code data-path-to-node="38" data-index-in-node="104">DROP</code>.</p>
<div class="code-block ng-tns-c1953118146-206 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQswY">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-206">
<div class="animated-opacity ng-tns-c1953118146-206">
<pre class="ng-tns-c1953118146-206"><code class="code-container formatted ng-tns-c1953118146-206" role="text" data-test-id="code-content"><span class="hljs-keyword">drop</span> <span class="hljs-keyword">table</span> mahasiswa;</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="41"><strong data-path-to-node="41" data-index-in-node="0">Kesimpulan</strong></h3>
<p data-path-to-node="42">SQLite adalah solusi yang sangat praktis bagi programmer yang membutuhkan database ringan, cepat, dan tidak memerlukan konfigurasi server yang rumit. Dengan menguasai perintah-perintah dasar melalui Command Prompt, Anda sudah memiliki fondasi yang kuat untuk mengintegrasikan SQLite ke dalam bahasa pemrograman Java Anda nantinya.</p>
<p data-path-to-node="43"><strong data-path-to-node="43" data-index-in-node="0">Tantangan:</strong> Buatlah sebuah tabel bernama <code data-path-to-node="43" data-index-in-node="40">barang</code> yang berisi kolom <code data-path-to-node="43" data-index-in-node="65">Kode_barang</code>, <code data-path-to-node="43" data-index-in-node="78">Nama_barang</code>, dan <code data-path-to-node="43" data-index-in-node="95">Stok</code>. Masukkan minimal 5 barang komputer (seperti Monitor, Keyboard, Mouse), lalu cobalah berlatih menampilkan barang yang stoknya di bawah 10!</p>
</div>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Pengenalan Database &amp; SQL: Panduan Dasar DDL dan DML</title>
        <author>
            <name>Abdan A. S.</name>
        </author>
        <link href="https://informatikainsight.netlify.app/pengenalan-database-dan-sql-dasar.html"/>
        <id>https://informatikainsight.netlify.app/pengenalan-database-dan-sql-dasar.html</id>
            <category term="Pemrograman"/>
            <category term="Java"/>

        <updated>2026-02-26T09:40:09+07:00</updated>
            <summary>
                <![CDATA[
                    Di era digital saat ini, hampir semua aplikasi membutuhkan tempat untuk menyimpan data. Di sinilah peran database sangat dibutuhkan. Secara&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <p data-path-to-node="2"><span data-path-to-node="2,0">Di era digital saat ini, hampir semua aplikasi membutuhkan tempat untuk menyimpan data. Di sinilah peran database sangat dibutuhkan. </span><span data-path-to-node="2,2"><span class="citation-696">Secara umum, database adalah kumpulan dari tabel-tabel yang saling berelasi dan disusun secara logis</span></span><span data-path-to-node="2,4">. </span><span data-path-to-node="2,6"><span class="citation-695">Penyusunan logis ini bertujuan untuk menghasilkan informasi yang bernilai guna dalam proses pengambilan keputusan</span></span><span data-path-to-node="2,8">.</span></p>
<p id="p-rc_ce5ca70d5fbe0ed6-186" data-path-to-node="2"></p>
<p data-path-to-node="3">Para ahli juga memiliki definisi tersendiri mengenai database:</p>
<ul>
<li data-path-to-node="4,0,1"><span data-path-to-node="4,0,1,0"><strong data-path-to-node="4,0,1,0" data-index-in-node="0"><span class="citation-694">Gordon C. Everest:</span></strong><span class="citation-694"> Mendefinisikan database sebagai koleksi atau kumpulan data yang mekanis, terbagi (</span><i data-path-to-node="4,0,1,0" data-index-in-node="101"><span class="citation-694">shared</span></i><span class="citation-694">), terdefinisi secara formal, dan dikontrol terpusat pada organisasi</span></span><span data-path-to-node="4,0,1,2">.</span></li>
<li id="p-rc_ce5ca70d5fbe0ed6-188" data-path-to-node="4,1,0"><span data-path-to-node="4,1,0,0">C.J. </span><span data-path-to-node="4,1,0,2"><span class="citation-693">Date: Menyatakan bahwa database adalah koleksi "data operasional" yang tersimpan dan dipakai oleh sistem aplikasi dari suatu organisasi</span></span><span data-path-to-node="4,1,0,4">. </span><span data-path-to-node="4,1,0,6"><span class="citation-692">Data operasional ini merujuk pada data yang tersimpan secara permanen pada sistem</span></span><span data-path-to-node="4,1,0,8">.</span></li>
</ul>
<h2 data-path-to-node="6"><strong data-path-to-node="6" data-index-in-node="0">Memahami Hierarki Data</strong></h2>
<p data-path-to-node="7"><span data-path-to-node="7,0">Sebelum masuk ke dalam perintah teknis, penting untuk memahami bagaimana data disusun. </span><span data-path-to-node="7,2"><span class="citation-691">Data di dalam komputer tidak disimpan secara sembarangan, melainkan memiliki hierarki dari ukuran terkecil hingga terbesar</span></span><span data-path-to-node="7,4">.</span></p>
<p id="p-rc_ce5ca70d5fbe0ed6-189" data-path-to-node="7"></p>
<p data-path-to-node="8">Berikut adalah urutan hierarki data:</p>
<ol>
<li data-path-to-node="9,0,1"><span data-path-to-node="9,0,1,0"><strong data-path-to-node="9,0,1,0" data-index-in-node="0"><span class="citation-690">Characters:</span></strong><span class="citation-690"> Merupakan satuan data terkecil berupa huruf, angka, atau simbol</span></span><span data-path-to-node="9,0,1,2">.</span></li>
<li data-path-to-node="9,1,1"><span data-path-to-node="9,1,1,0"><strong data-path-to-node="9,1,1,0" data-index-in-node="0"><span class="citation-689">Field Data / Item:</span></strong><span class="citation-689"> Kumpulan karakter yang membentuk suatu makna, misalnya kolom "Nama" atau "Alamat" dalam sebuah tabel</span></span><span data-path-to-node="9,1,1,2">.</span></li>
<li data-path-to-node="9,2,1"><span data-path-to-node="9,2,1,0"><strong data-path-to-node="9,2,1,0" data-index-in-node="0"><span class="citation-688">Record:</span></strong><span class="citation-688"> Kumpulan </span><i data-path-to-node="9,2,1,0" data-index-in-node="17"><span class="citation-688">field</span></i><span class="citation-688"> yang saling berhubungan dan membentuk satu baris informasi utuh, misalnya data lengkap satu orang pegawai</span></span><span data-path-to-node="9,2,1,2">.</span></li>
<li data-path-to-node="9,3,1"><span data-path-to-node="9,3,1,0"><strong data-path-to-node="9,3,1,0" data-index-in-node="0"><span class="citation-687">File:</span></strong><span class="citation-687"> Kumpulan </span><i data-path-to-node="9,3,1,0" data-index-in-node="15"><span class="citation-687">record</span></i><span class="citation-687"> sejenis, yang sering kita sebut sebagai Tabel</span></span><span data-path-to-node="9,3,1,2">.</span></li>
<li id="p-rc_ce5ca70d5fbe0ed6-194" data-path-to-node="9,4,1"><span data-path-to-node="9,4,1,0"><strong data-path-to-node="9,4,1,0" data-index-in-node="0"><span class="citation-686">Database:</span></strong><span class="citation-686"> Kumpulan </span><i data-path-to-node="9,4,1,0" data-index-in-node="19"><span class="citation-686">file</span></i><span class="citation-686"> atau tabel yang saling berelasi</span></span><span data-path-to-node="9,4,1,2">.</span></li>
</ol>
<h2 data-path-to-node="11"><strong data-path-to-node="11" data-index-in-node="0">DBMS dan SQL</strong></h2>
<p data-path-to-node="12"><span data-path-to-node="12,0">Untuk mengelola database yang besar, kita membutuhkan sebuah aplikasi. </span><span data-path-to-node="12,2"><span class="citation-685">Perangkat lunak atau paket program yang dibuat untuk memudahkan dan mengefisienkan proses pemasukan, pengeditan, penghapusan, dan pengambilan informasi terhadap database disebut </span><strong data-path-to-node="12,2" data-index-in-node="178"><span class="citation-685">DBMS (Database Management System)</span></strong></span><span data-path-to-node="12,4">. Beberapa contoh perangkat lunak DBMS yang populer adalah Microsoft SQL, MySQL, Oracle, dan MS. </span><span data-path-to-node="12,6"><span class="citation-684">Access</span></span><span data-path-to-node="12,8">.</span></p>
<p id="p-rc_ce5ca70d5fbe0ed6-195" data-path-to-node="12"></p>
<p id="p-rc_ce5ca70d5fbe0ed6-196" data-path-to-node="13"><span data-path-to-node="13,1"><span class="citation-683">Untuk "berbicara" dengan DBMS tersebut, kita menggunakan bahasa </span><strong data-path-to-node="13,1" data-index-in-node="64"><span class="citation-683">SQL (Structure Query Language)</span></strong></span><span data-path-to-node="13,3">. </span><span data-path-to-node="13,5"><span class="citation-682">SQL adalah bahasa baku (ANSI/SQL) yang bersifat non-procedural dan berorientasi himpunan (</span><i data-path-to-node="13,5" data-index-in-node="90"><span class="citation-682">set-oriented language</span></i><span class="citation-682">)</span></span><span data-path-to-node="13,7">. </span><span data-path-to-node="13,9"><span class="citation-681">Bahasa ini dapat dieksekusi secara interaktif maupun ditempelkan (</span><i data-path-to-node="13,9" data-index-in-node="66"><span class="citation-681">embedded</span></i><span class="citation-681">) pada sebuah program aplikasi</span></span><span data-path-to-node="13,11">.</span></p>
<h2 data-path-to-node="15"><strong data-path-to-node="15" data-index-in-node="0">Kelompok Perintah SQL: DDL vs DML</strong></h2>
<p data-path-to-node="16"><span data-path-to-node="16,1"><span class="citation-680">Secara umum, perintah-perintah pada SQL dibagi menjadi dua kelompok besar</span></span><span data-path-to-node="16,3">:</span></p>
<p id="p-rc_ce5ca70d5fbe0ed6-197" data-path-to-node="16"></p>
<h3 data-path-to-node="17"><strong data-path-to-node="17" data-index-in-node="0">1. DDL (Data Definition Language)</strong></h3>
<p data-path-to-node="18"><span data-path-to-node="18,1"><span class="citation-679">DDL digunakan untuk mendefinisikan struktur data dan proyek database itu sendiri</span></span><span data-path-to-node="18,3">. </span><span data-path-to-node="18,5"><span class="citation-678">Perintah ini berkaitan dengan pembuatan, pengubahan, penghapusan, dan pemberian izin pada objek database</span></span><span data-path-to-node="18,7">.</span></p>
<p id="p-rc_ce5ca70d5fbe0ed6-198" data-path-to-node="18"></p>
<ul>
<li data-path-to-node="19,0,1"><span data-path-to-node="19,0,1,0"><strong data-path-to-node="19,0,1,0" data-index-in-node="0"><span class="citation-677">CREATE TABLE:</span></strong><span class="citation-677"> Untuk membuat tabel baru</span></span><span data-path-to-node="19,0,1,2">.</span></li>
<li data-path-to-node="19,1,1"><span data-path-to-node="19,1,1,0"><strong data-path-to-node="19,1,1,0" data-index-in-node="0"><span class="citation-676">ALTER TABLE:</span></strong><span class="citation-676"> Untuk mengubah struktur atau menyisipkan kolom ke dalam tabel</span></span><span data-path-to-node="19,1,1,2">.</span></li>
<li data-path-to-node="19,2,1"><span data-path-to-node="19,2,1,0"><strong data-path-to-node="19,2,1,0" data-index-in-node="0"><span class="citation-675">DROP TABLE:</span></strong><span class="citation-675"> Untuk menghapus tabel beserta strukturnya</span></span><span data-path-to-node="19,2,1,2">.</span></li>
</ul>
<p id="p-rc_ce5ca70d5fbe0ed6-201" data-path-to-node="19,2,1"></p>
<h3 data-path-to-node="20"><strong data-path-to-node="20" data-index-in-node="0">2. DML (Data Manipulation Language)</strong></h3>
<p data-path-to-node="21"><span data-path-to-node="21,1"><span class="citation-674">Jika DDL mengurus "wadah" datanya, maka DML bertugas untuk memanipulasi "isi" data di dalam tabel tersebut</span></span><span data-path-to-node="21,3">.</span></p>
<p id="p-rc_ce5ca70d5fbe0ed6-202" data-path-to-node="21"></p>
<ul>
<li data-path-to-node="22,0,1"><span data-path-to-node="22,0,1,0"><strong data-path-to-node="22,0,1,0" data-index-in-node="0"><span class="citation-673">SELECT:</span></strong><span class="citation-673"> Digunakan untuk memilih dan menampilkan data dari suatu tabel atau </span><i data-path-to-node="22,0,1,0" data-index-in-node="75"><span class="citation-673">view</span></i></span><span data-path-to-node="22,0,1,2">.</span></li>
<li data-path-to-node="22,1,1"><span data-path-to-node="22,1,1,0"><strong data-path-to-node="22,1,1,0" data-index-in-node="0"><span class="citation-672">INSERT:</span></strong><span class="citation-672"> Digunakan untuk menyisipkan baris data baru ke dalam tabel</span></span><span data-path-to-node="22,1,1,2">.</span></li>
<li data-path-to-node="22,2,1"><span data-path-to-node="22,2,1,0"><strong data-path-to-node="22,2,1,0" data-index-in-node="0"><span class="citation-671">UPDATE:</span></strong><span class="citation-671"> Digunakan untuk mengubah isi dari kolom (</span><i data-path-to-node="22,2,1,0" data-index-in-node="49"><span class="citation-671">field</span></i><span class="citation-671">) pada suatu tabel</span></span><span data-path-to-node="22,2,1,2">.</span></li>
<li id="p-rc_ce5ca70d5fbe0ed6-206" data-path-to-node="22,3,1"><span data-path-to-node="22,3,1,0"><strong data-path-to-node="22,3,1,0" data-index-in-node="0"><span class="citation-670">DELETE:</span></strong><span class="citation-670"> Digunakan untuk menghapus baris data dari suatu tabel</span></span><span data-path-to-node="22,3,1,2">.</span></li>
</ul>
<h2 data-path-to-node="24"><strong data-path-to-node="24" data-index-in-node="0">Contoh Perintah Dasar SQL</strong></h2>
<p data-path-to-node="25">Berikut adalah sintaks dasar beserta contoh penggunaannya untuk mengelola database.</p>
<h3 data-path-to-node="26"><strong data-path-to-node="26" data-index-in-node="0">Perintah DDL (Mengelola Database dan Tabel)</strong></h3>
<p data-path-to-node="28"><span data-path-to-node="28,0"><strong data-path-to-node="28,0" data-index-in-node="0"><span class="citation-669">Membuat dan Menghapus Database</span></strong></span></p>
<div class="code-block ng-tns-c1953118146-168 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQgAU">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-168">
<div class="animated-opacity ng-tns-c1953118146-168">
<pre class="ng-tns-c1953118146-168"><code class="code-container formatted ng-tns-c1953118146-168" role="text" data-test-id="code-content"><span class="hljs-keyword">CREATE</span> DATABASE sekolah;
<span class="hljs-keyword">DROP</span> DATABASE sekolah;</code></pre>
</div>
</div>
</div>
<p data-path-to-node="31"><span data-path-to-node="31,0"><strong data-path-to-node="31,0" data-index-in-node="0"><span class="citation-668">Membuat, Menghapus, dan Mengubah Tabel</span></strong> </span></p>
<div class="code-block ng-tns-c1953118146-169 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQggU">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-169">
<div class="animated-opacity ng-tns-c1953118146-169">
<pre class="ng-tns-c1953118146-169"><code class="code-container formatted ng-tns-c1953118146-169" role="text" data-test-id="code-content"><span class="hljs-comment">-- Membuat tabel siswa dengan 3 kolom</span>
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> siswa (nis <span class="hljs-type">varchar</span>(<span class="hljs-number">15</span>), nama <span class="hljs-type">varchar</span>(<span class="hljs-number">35</span>), kelas <span class="hljs-type">int</span>(<span class="hljs-number">3</span>));

<span class="hljs-comment">-- Menambahkan kolom alamat pada tabel siswa</span>
<span class="hljs-keyword">ALTER</span> <span class="hljs-keyword">TABLE</span> siswa <span class="hljs-keyword">ADD</span> alamat <span class="hljs-type">varchar</span>(<span class="hljs-number">50</span>);

<span class="hljs-comment">-- Menghapus tabel siswa</span>
<span class="hljs-keyword">DROP</span> <span class="hljs-keyword">TABLE</span> siswa;
</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="33"><strong data-path-to-node="33" data-index-in-node="0">Perintah DML (Mengelola Isi Data)</strong></h3>
<p data-path-to-node="35"><span data-path-to-node="35,0"><strong data-path-to-node="35,0" data-index-in-node="0"><span class="citation-667">Perintah INSERT (Menambah Data)</span></strong> </span></p>
<div class="code-block ng-tns-c1953118146-170 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQhAU">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-170">
<div class="animated-opacity ng-tns-c1953118146-170">
<pre class="ng-tns-c1953118146-170"><code class="code-container formatted ng-tns-c1953118146-170" role="text" data-test-id="code-content"><span class="hljs-comment">-- Memasukkan data baru ke tabel siswa</span>
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> siswa (nis, nama, kelas) <span class="hljs-keyword">VALUES</span> (<span class="hljs-string">'103099981'</span>, <span class="hljs-string">'AIDA AGUSTINA'</span>, <span class="hljs-string">'3C'</span>);</code></pre>
</div>
</div>
</div>
<p data-path-to-node="38"><span data-path-to-node="38,0"><strong data-path-to-node="38,0" data-index-in-node="0"><span class="citation-666">Perintah SELECT (Menampilkan Data)</span></strong> </span><span data-path-to-node="38,3"><span class="citation-665">Perintah klausa </span><code data-path-to-node="38,3" data-index-in-node="16"><span class="citation-665">WHERE</span></code><span class="citation-665"> bersifat opsional dan digunakan untuk menyaring data</span></span><span data-path-to-node="38,5">.</span></p>
<div class="code-block ng-tns-c1953118146-171 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQhgU">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-171">
<div class="animated-opacity ng-tns-c1953118146-171">
<pre class="ng-tns-c1953118146-171"><code class="code-container formatted ng-tns-c1953118146-171" role="text" data-test-id="code-content"><span class="hljs-comment">-- Menampilkan semua kolom dari tabel siswa</span>
<span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> siswa;

<span class="hljs-comment">-- Menampilkan data khusus kelas 3C</span>
<span class="hljs-keyword">SELECT</span> nis, nama, kelas <span class="hljs-keyword">FROM</span> siswa <span class="hljs-keyword">WHERE</span> kelas <span class="hljs-operator">=</span> <span class="hljs-string">'3C'</span>;

<span class="hljs-comment">-- Menampilkan data siswa bernama awalan 'AN', diurutkan ascending</span>
<span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> siswa <span class="hljs-keyword">WHERE</span> nama <span class="hljs-keyword">like</span> <span class="hljs-string">'AN%'</span> <span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> nama <span class="hljs-keyword">ASC</span>;</code></pre>
</div>
</div>
</div>
<p data-path-to-node="41"><span data-path-to-node="41,0"><strong data-path-to-node="41,0" data-index-in-node="0"><span class="citation-664">Perintah UPDATE (Memperbaiki Data)</span></strong> </span></p>
<div class="code-block ng-tns-c1953118146-172 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQiAU">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-172">
<div class="animated-opacity ng-tns-c1953118146-172">
<pre class="ng-tns-c1953118146-172"><code class="code-container formatted ng-tns-c1953118146-172" role="text" data-test-id="code-content"><span class="hljs-comment">-- Mengganti nama menjadi HERDI untuk siswa dengan NIS tersebut</span>
UPDATE siswa <span class="hljs-keyword">SET</span> nama<span class="hljs-operator">=</span><span class="hljs-string">'HERDI'</span> <span class="hljs-keyword">WHERE</span> nis<span class="hljs-operator">=</span><span class="hljs-string">'10309965'</span>;</code></pre>
</div>
</div>
</div>
<p data-path-to-node="44"><span data-path-to-node="44,0"><strong data-path-to-node="44,0" data-index-in-node="0"><span class="citation-663">Perintah DELETE (Menghapus Data)</span></strong> </span></p>
<div class="code-block ng-tns-c1953118146-173 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQigU">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-173">
<div class="animated-opacity ng-tns-c1953118146-173">
<pre class="ng-tns-c1953118146-173"><code class="code-container formatted ng-tns-c1953118146-173" role="text" data-test-id="code-content"><span class="hljs-comment">-- Menghapus baris data siswa yang bernama AIDA AGUSTINA</span>
<span class="hljs-keyword">DELETE</span> <span class="hljs-keyword">FROM</span> siswa <span class="hljs-keyword">WHERE</span> nama <span class="hljs-operator">=</span> <span class="hljs-string">'AIDA AGUSTINA'</span>;</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="46"><strong data-path-to-node="46" data-index-in-node="0">Kesimpulan</strong></h3>
<p data-path-to-node="47">Pemahaman tentang konsep Database, peranan DBMS, dan penguasaan bahasa SQL adalah kemampuan krusial di bidang Informatika. Melalui dua pilar utama yaitu DDL (untuk merancang kerangka database) dan DML (untuk memanipulasi isinya), Anda memiliki kendali penuh untuk membuat sistem informasi yang terstruktur.</p>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Memahami Rekursi di Java: Panduan Lengkap &amp; Contoh Program</title>
        <author>
            <name>Abdan A. S.</name>
        </author>
        <link href="https://informatikainsight.netlify.app/rekursi-java-panduan-lengkap.html"/>
        <id>https://informatikainsight.netlify.app/rekursi-java-panduan-lengkap.html</id>
            <category term="Pemrograman"/>
            <category term="Java"/>

        <updated>2026-02-26T09:40:24+07:00</updated>
            <summary>
                <![CDATA[
                    Dalam dunia pemrograman, ada kalanya kita perlu menyelesaikan masalah dengan memecahnya menjadi versi yang lebih kecil dari masalah yang sama.
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <p data-path-to-node="2">Dalam dunia pemrograman, ada kalanya kita perlu menyelesaikan masalah dengan memecahnya menjadi versi yang lebih kecil dari masalah yang sama. Di Java, teknik yang memungkinkan sebuah metode untuk memanggil dirinya sendiri ini dikenal dengan nama <strong data-path-to-node="2" data-index-in-node="247">Rekursi</strong>.</p>
<p id="p-rc_28359b07ddada698-170" data-path-to-node="3"><span data-path-to-node="3,1"><span class="citation-611">Rekursi atau </span><i data-path-to-node="3,1" data-index-in-node="13"><span class="citation-611">recurrence</span></i><span class="citation-611"> dapat didefinisikan sebagai metode yang mengulang prosesnya sendiri</span></span><span data-path-to-node="3,3">. </span><span data-path-to-node="3,5"><span class="citation-610">Saat sebuah rekursi dipanggil, proses tersebut akan terus dijalankan dan diulang sampai kondisi berhentinya terpenuhi</span></span><span data-path-to-node="3,7">.</span></p>
<h3 data-path-to-node="5"><strong data-path-to-node="5" data-index-in-node="0">Dua Komponen Utama Rekursi</strong></h3>
<p data-path-to-node="6"><span data-path-to-node="6,1"><span class="citation-609">Dua hal yang selalu ada dan wajib diperhatikan dalam menyusun sebuah metode rekursi adalah Blok Basis dan Blok Rekursi</span></span><span data-path-to-node="6,3">.</span></p>
<p id="p-rc_28359b07ddada698-171" data-path-to-node="6"></p>
<ol>
<li data-path-to-node="7,0,1"><span data-path-to-node="7,0,1,0"><strong data-path-to-node="7,0,1,0" data-index-in-node="0"><span class="citation-608">Blok Basis (Kondisi Berhenti):</span></strong><span class="citation-608"> Blok ini merupakan kode program yang memuat kondisi berhenti</span></span><span data-path-to-node="7,0,1,2">. </span><span data-path-to-node="7,0,1,4"><span class="citation-607">Blok inilah yang menyebabkan sebuah rekursi menghentikan prosesnya, sehingga program tidak terjebak dalam </span><i data-path-to-node="7,0,1,4" data-index-in-node="106"><span class="citation-607">infinite loop</span></i><span class="citation-607"> dan diperoleh hasil akhir</span></span><span data-path-to-node="7,0,1,6">. </span><span data-path-to-node="7,0,1,8"><span class="citation-606">Pada blok ini, nilai yang dikembalikan (</span><i data-path-to-node="7,0,1,8" data-index-in-node="40"><span class="citation-606">return</span></i><span class="citation-606">) biasanya berupa nilai netral yang tidak mengubah hasil sebenarnya</span></span><span data-path-to-node="7,0,1,10">.</span></li>
<li data-path-to-node="7,1,1"><span data-path-to-node="7,1,1,0"><strong data-path-to-node="7,1,1,0" data-index-in-node="0"><span class="citation-605">Blok Rekursi (Kondisi Mengulang):</span></strong><span class="citation-605"> Ini merupakan kode program yang memuat kondisi mengulang</span></span><span data-path-to-node="7,1,1,2">. </span><span data-path-to-node="7,1,1,4"><span class="citation-604">Blok inilah yang nantinya berfungsi mengulang prosesnya terus-menerus dengan memanggil metode itu sendiri</span></span><span data-path-to-node="7,1,1,6">.</span></li>
</ol>
<p id="p-rc_28359b07ddada698-173" data-path-to-node="7,1,1"></p>
<p data-path-to-node="8"><span data-path-to-node="8,1"><span class="citation-603">Sebelum menulis kode, kita harus menentukan konsepnya terlebih dahulu</span></span><span data-path-to-node="8,3">. </span><span data-path-to-node="8,5"><span class="citation-602">Konsep ini berisikan urutan atau langkah terperinci yang menjelaskan proses rekursi dari awal sampai akhir, meliputi permisalan (nilai awal), langkah-langkah di setiap perulangan, dan hasil akhir</span></span><span data-path-to-node="8,7">. </span><span data-path-to-node="8,9"><span class="citation-601">Memahami konsep cara kerja dasar ini akan sangat memudahkan kita dalam menyusun rekursi ke dalam kode program</span></span><span data-path-to-node="8,11">.</span></p>
<p id="p-rc_28359b07ddada698-174" data-path-to-node="8"></p>
<h3 data-path-to-node="10"><strong data-path-to-node="10" data-index-in-node="0">Cara Mendeklarasikan Rekursi di Java</strong></h3>
<p data-path-to-node="11"><span data-path-to-node="11,1"><span class="citation-600">Karena rekursi pada dasarnya adalah sebuah metode, cara mendeklarasikannya sangat mirip dengan cara mendeklarasikan metode biasa</span></span><span data-path-to-node="11,3">. </span><span data-path-to-node="11,5"><span class="citation-599">Perbedaan utamanya hanyalah kita harus memisahkan antara blok perulangan dan blok penghentian di dalamnya</span></span><span data-path-to-node="11,7">.</span></p>
<p id="p-rc_28359b07ddada698-175" data-path-to-node="11"></p>
<p data-path-to-node="12">Pemisahan ini biasanya diimplementasikan menggunakan struktur <code data-path-to-node="12" data-index-in-node="62">if-else</code>. Berikut adalah bentuk dasar pendeklarasian rekursi di Java:</p>
<div class="code-block ng-tns-c1953118146-140 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQ4QM">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-140">
<div class="animated-opacity ng-tns-c1953118146-140">
<pre class="ng-tns-c1953118146-140"><code class="code-container formatted ng-tns-c1953118146-140" role="text" data-test-id="code-content"><span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> tipedataout <span class="hljs-title">namarekursi</span> <span class="hljs-params">(tipedatain namavariabelin)</span> </span>{
    <span class="hljs-keyword">if</span> (kondisiberhenti) {
        <span class="hljs-keyword">return</span> (nilainetral); <span class="hljs-comment">// Ini adalah Blok Basis</span>
    } <span class="hljs-keyword">else</span> {
        <span class="hljs-comment">// kondisimengulang</span>
        <span class="hljs-keyword">return</span> (pemanggilanulang); <span class="hljs-comment">// Ini adalah Blok Rekursi</span>
    }
}</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="15"><strong data-path-to-node="15" data-index-in-node="0">Cara Memanggil Rekursi</strong></h3>
<p data-path-to-node="16"><span data-path-to-node="16,1"><span class="citation-598">Sama halnya dengan metode biasa, rekursi akan dijalankan jika dipanggil di dalam program utama atau di tempat lain yang membutuhkannya</span></span><span data-path-to-node="16,3">. </span><span data-path-to-node="16,5"><span class="citation-597">Cara memanggilnya pun sama dengan memanggil metode pada umumnya</span></span><span data-path-to-node="16,7">.</span></p>
<p id="p-rc_28359b07ddada698-176" data-path-to-node="16"></p>
<p id="p-rc_28359b07ddada698-177" data-path-to-node="17"><span data-path-to-node="17,1"><span class="citation-596">Format pemanggilannya adalah: </span><code data-path-to-node="17,1" data-index-in-node="30"><span class="citation-596">namavariabel = namarekursi(variabelinput);</span></code></span><span data-path-to-node="17,3">. </span><span data-path-to-node="17,5"><span class="citation-595">Saat rekursi dipanggil, serangkaian proses di dalamnya akan berjalan, berulang, lalu berhenti dan memberikan hasil akhir</span></span><span data-path-to-node="17,7">.</span></p>
<h3 data-path-to-node="19"><strong data-path-to-node="19" data-index-in-node="0">Contoh Program: Menghitung Faktorial</strong></h3>
<p data-path-to-node="20">Penerapan klasik dari rekursi adalah perhitungan matematika seperti Faktorial. Faktorial dari sebuah bilangan bulat positif <span class="math-inline" data-math="n" data-index-in-node="124">$n$</span> (ditulis <span class="math-inline" data-math="n!" data-index-in-node="135">$n!$</span>) adalah perkalian semua bilangan bulat positif yang kurang dari atau sama dengan <span class="math-inline" data-math="n" data-index-in-node="219">$n$</span>.</p>
<p data-path-to-node="20">Misalnya, Faktorial 5 (<span class="math-inline" data-math="5!" data-index-in-node="245">5!</span>) adalah <span class="math-inline" data-math="5 \times 4 \times 3 \times 2 \times 1" data-index-in-node="256">5 X 4 X 3 X 2 X 1</span>.</p>
<p data-path-to-node="21">Berikut adalah contoh program Java yang mengimplementasikan rekursi untuk menghitung faktorial:</p>
<div class="code-block ng-tns-c1953118146-141 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQ4gM">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-141">
<div class="animated-opacity ng-tns-c1953118146-141">
<pre class="ng-tns-c1953118146-141"><code class="code-container formatted ng-tns-c1953118146-141" role="text" data-test-id="code-content"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">contoh_rekursi</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span> <span class="hljs-params">(String[] args)</span> </span>{
        <span class="hljs-comment">// Memanggil fungsi rekursi faktorial dengan input 5</span>
        System.out.println(faktorial(<span class="hljs-number">5</span>)); 
    }

    <span class="hljs-comment">// Mendeklarasikan metode rekursi</span>
    <span class="hljs-function"><span class="hljs-keyword">static</span> <span class="hljs-keyword">int</span> <span class="hljs-title">faktorial</span> <span class="hljs-params">(<span class="hljs-keyword">int</span> a)</span> </span>{
        <span class="hljs-keyword">if</span> (a == <span class="hljs-number">0</span>) {
            <span class="hljs-keyword">return</span> <span class="hljs-number">1</span>; <span class="hljs-comment">// Blok Basis: berhenti jika a = 0, nilai netral perkalian adalah 1</span>
        } <span class="hljs-keyword">else</span> {
            <span class="hljs-keyword">return</span> a * faktorial(a - <span class="hljs-number">1</span>); <span class="hljs-comment">// Blok Rekursi: memanggil dirinya sendiri dengan nilai a-1</span>
        }
    }
}</code></pre>
</div>
</div>
</div>
<p data-path-to-node="23"><strong data-path-to-node="23" data-index-in-node="0">Penjelasan Alur Program:</strong></p>
<ol>
<li data-path-to-node="24,0,0">Program memanggil <code data-path-to-node="24,0,0" data-index-in-node="18">faktorial(5)</code>. Karena 5 tidak sama dengan 0, program menjalankan bagian <code data-path-to-node="24,0,0" data-index-in-node="89">else</code>: <code data-path-to-node="24,0,0" data-index-in-node="95">return 5 * faktorial(4)</code>.</li>
<li data-path-to-node="24,1,0"><code data-path-to-node="24,1,0" data-index-in-node="0">faktorial(4)</code> dipanggil. Hasilnya: <code data-path-to-node="24,1,0" data-index-in-node="34">return 4 * faktorial(3)</code>.</li>
<li data-path-to-node="24,2,0">Proses ini berulang hingga <code data-path-to-node="24,2,0" data-index-in-node="27">faktorial(0)</code> dipanggil.</li>
<li data-path-to-node="24,3,0">Pada <code data-path-to-node="24,3,0" data-index-in-node="5">faktorial(0)</code>, kondisi <code data-path-to-node="24,3,0" data-index-in-node="27">if (a == 0)</code> terpenuhi, maka fungsi mengembalikan nilai <code data-path-to-node="24,3,0" data-index-in-node="82">1</code> (Blok Basis bekerja).</li>
<li data-path-to-node="24,4,0">Nilai pengembalian tersebut merambat mundur (<span class="math-inline" data-math="1 \times 1 \times 2 \times 3 \times 4 \times 5" data-index-in-node="45">1 X 1 X 2 X 3 X 4 X 5</span>), menghasilkan output akhir <strong data-path-to-node="24,4,0" data-index-in-node="120">120</strong>.</li>
</ol>
<h3 data-path-to-node="25"><strong data-path-to-node="25" data-index-in-node="0">Kesimpulan</strong></h3>
<p data-path-to-node="26">Rekursi adalah teknik pemrograman yang elegan dan sangat cocok digunakan untuk masalah yang memiliki pola perulangan berkalang, seperti penelusuran struktur pohon (<i data-path-to-node="26" data-index-in-node="164">tree traversal</i>) atau perhitungan matematis tertentu. Selalu pastikan Anda menentukan <strong data-path-to-node="26" data-index-in-node="249">Blok Basis</strong> dengan benar agar program rekursi Anda tidak terjebak dalam perulangan tanpa henti!</p>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Mengambil Input di Java: Panduan Scanner dan BufferedReader</title>
        <author>
            <name>Abdan A. S.</name>
        </author>
        <link href="https://informatikainsight.netlify.app/input-java-scanner-bufferedreader.html"/>
        <id>https://informatikainsight.netlify.app/input-java-scanner-bufferedreader.html</id>
            <category term="Pemrograman"/>
            <category term="Java"/>

        <updated>2026-02-26T09:40:40+07:00</updated>
            <summary>
                <![CDATA[
                    Dalam membuat program Java yang interaktif, kita memerlukan cara untuk menerima masukan (input) dari pengguna. Java menyediakan beberapa kelas bawaan&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <p data-path-to-node="2">Dalam membuat program Java yang interaktif, kita memerlukan cara untuk menerima masukan (input) dari pengguna. Java menyediakan beberapa kelas bawaan untuk menangani hal ini. Dua kelas yang paling sering digunakan untuk mengambil input dari keyboard adalah <strong data-path-to-node="2" data-index-in-node="257">Scanner</strong> dan <strong data-path-to-node="2" data-index-in-node="269">BufferedReader</strong>. Artikel ini akan membahas langkah-langkah penggunaan kedua kelas tersebut beserta contoh programnya.</p>
<h2 data-path-to-node="5"><strong data-path-to-node="5" data-index-in-node="0">1. Menggunakan Class Scanner</strong></h2>
<p data-path-to-node="7"><span data-path-to-node="7,0"><code data-path-to-node="7,0" data-index-in-node="0"><span class="citation-555">Scanner</span></code><span class="citation-555"> merupakan kelas yang menyediakan fungsi-fungsi untuk mengambil input dari keyboard</span></span><span data-path-to-node="7,2">. Kelas ini sangat populer di kalangan pemula karena penggunaannya yang praktis dan kemampuannya membaca berbagai tipe data secara langsung.</span></p>
<p id="p-rc_0f82df9927808cb6-134" data-path-to-node="7"></p>
<h3 data-path-to-node="8"><strong data-path-to-node="8" data-index-in-node="0">Langkah-langkah Menggunakan Scanner</strong></h3>
<p data-path-to-node="9">Untuk menggunakan <code data-path-to-node="9" data-index-in-node="18">Scanner</code>, Anda harus mengikuti langkah-langkah berikut:</p>
<ul>
<li data-path-to-node="10,0,0"><span data-path-to-node="10,0,0,1"><span class="citation-554">Mengimport kelas </span><code data-path-to-node="10,0,0,1" data-index-in-node="17"><span class="citation-554">Scanner</span></code><span class="citation-554"> yang ada pada </span><i data-path-to-node="10,0,0,1" data-index-in-node="39"><span class="citation-554">package</span></i> <code data-path-to-node="10,0,0,1" data-index-in-node="47"><span class="citation-554">java.util</span></code><span class="citation-554"> dengan perintah </span><code data-path-to-node="10,0,0,1" data-index-in-node="73"><span class="citation-554">import java.util.Scanner;</span></code></span><span data-path-to-node="10,0,0,3">.</span></li>
<li data-path-to-node="10,0,0"><span data-path-to-node="10,1,0,1"><span class="citation-553">Membuat objek referensi sebagai media input data</span></span><span data-path-to-node="10,1,0,3">. </span><span data-path-to-node="10,1,0,5"><span class="citation-552">Contoh formatnya adalah </span><code data-path-to-node="10,1,0,5" data-index-in-node="24"><span class="citation-552">Scanner sc = new Scanner(System.in);</span></code></span><span data-path-to-node="10,1,0,7">. * </span><span data-path-to-node="10,1,0,9"><span class="citation-551">Memanggil </span><i data-path-to-node="10,1,0,9" data-index-in-node="10"><span class="citation-551">method</span></i><span class="citation-551"> khusus untuk menerima inputan melalui objek yang dibuat sebelumnya</span></span><span data-path-to-node="10,1,0,11">.</span></li>
</ul>
<p id="p-rc_0f82df9927808cb6-135" data-path-to-node="10,0,0"></p>
<h3 data-path-to-node="11"><strong data-path-to-node="11" data-index-in-node="0">Method Penting pada Scanner</strong></h3>
<p data-path-to-node="12">Kelas <code data-path-to-node="12" data-index-in-node="6">Scanner</code> menyediakan berbagai <i data-path-to-node="12" data-index-in-node="35">method</i> yang disesuaikan dengan tipe data yang ingin ditampung:</p>
<ul>
<li data-path-to-node="13,0,1"><span data-path-to-node="13,0,1,0"><code data-path-to-node="13,0,1,0" data-index-in-node="0"><span class="citation-550 interactive-span-hovered">nextLine()</span></code><span class="citation-550 interactive-span-hovered">: Berfungsi untuk menampung data berupa String</span></span><span data-path-to-node="13,0,1,2">.</span></li>
<li data-path-to-node="13,1,1"><span data-path-to-node="13,1,1,0"><code data-path-to-node="13,1,1,0" data-index-in-node="0"><span class="citation-549 interactive-span-hovered">nextByte()</span></code><span class="citation-549 interactive-span-hovered">: Berfungsi untuk menampung data bertipe byte</span></span><span data-path-to-node="13,1,1,2">.</span></li>
<li data-path-to-node="13,2,1"><span data-path-to-node="13,2,1,0"><code data-path-to-node="13,2,1,0" data-index-in-node="0"><span class="citation-548 interactive-span-hovered">nextShort()</span></code><span class="citation-548 interactive-span-hovered">: Berfungsi untuk menampung data bertipe short</span></span><span data-path-to-node="13,2,1,2">.</span></li>
<li data-path-to-node="13,3,1"><span data-path-to-node="13,3,1,0"><code data-path-to-node="13,3,1,0" data-index-in-node="0"><span class="citation-547 interactive-span-hovered">nextInt()</span></code><span class="citation-547 interactive-span-hovered">: Berfungsi untuk menampung data berupa int</span></span><span data-path-to-node="13,3,1,2">.</span></li>
<li data-path-to-node="13,4,1"><span data-path-to-node="13,4,1,0"><code data-path-to-node="13,4,1,0" data-index-in-node="0"><span class="citation-546 interactive-span-hovered">nextLong()</span></code><span class="citation-546 interactive-span-hovered">: Berfungsi untuk menampung data bertipe long</span></span><span data-path-to-node="13,4,1,2">.</span></li>
<li data-path-to-node="13,5,1"><span data-path-to-node="13,5,1,0"><code data-path-to-node="13,5,1,0" data-index-in-node="0"><span class="citation-545 interactive-span-hovered">nextDouble()</span></code><span class="citation-545 interactive-span-hovered">: Berfungsi untuk menampung data bertipe double</span></span><span data-path-to-node="13,5,1,2">.</span></li>
<li data-path-to-node="13,6,1"><span data-path-to-node="13,6,1,0"><code data-path-to-node="13,6,1,0" data-index-in-node="0"><span class="citation-544 interactive-span-hovered">nextFloat()</span></code><span class="citation-544 interactive-span-hovered">: Berfungsi untuk menampung data bertipe float</span></span><span data-path-to-node="13,6,1,2">.</span></li>
<li id="p-rc_0f82df9927808cb6-144" data-path-to-node="13,7,1"><span data-path-to-node="13,7,1,0"><code data-path-to-node="13,7,1,0" data-index-in-node="0"><span class="citation-543 interactive-span-hovered">nextBoolean()</span></code><span class="citation-543 interactive-span-hovered">: Berfungsi untuk menampung data bertipe boolean</span></span><span data-path-to-node="13,7,1,2">.</span></li>
</ul>
<h3 data-path-to-node="14"><strong data-path-to-node="14" data-index-in-node="0">Contoh Program dengan Scanner</strong></h3>
<p data-path-to-node="15">Berikut adalah contoh program penghitungan nilai akhir mahasiswa menggunakan <code data-path-to-node="15" data-index-in-node="77">Scanner</code>:</p>
<div class="code-block ng-tns-c1953118146-119 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQ2AI">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-119">
<div class="animated-opacity ng-tns-c1953118146-119">
<pre class="ng-tns-c1953118146-119"><code class="code-container formatted ng-tns-c1953118146-119" role="text" data-test-id="code-content"><span class="hljs-keyword">import</span> java.util.Scanner; 
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">contohScanner</span></span>{ 
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span> <span class="hljs-params">(String [] args)</span> </span>{ 
        Scanner sc = <span class="hljs-keyword">new</span> Scanner(System.in); 
        
        System.out.print(<span class="hljs-string">"NPM: "</span>); 
        String npm = sc.nextLine(); 
        
        System.out.print(<span class="hljs-string">"Nama : "</span>); 
        String nama = sc.nextLine(); 
        
        System.out.print(<span class="hljs-string">"Nilai Tugas: "</span>); 
        <span class="hljs-keyword">int</span> tgs = sc.nextInt(); 
        
        System.out.print(<span class="hljs-string">"Nilai UTS: "</span>); 
        <span class="hljs-keyword">int</span> uts = sc.nextInt(); 
        
        System.out.print(<span class="hljs-string">"Nilai UAS: "</span>); 
        <span class="hljs-keyword">int</span> uas = sc.nextInt(); 
        
        <span class="hljs-keyword">double</span> akhir = <span class="hljs-number">0.2</span> * tgs + <span class="hljs-number">0.3</span> * uts + <span class="hljs-number">0.5</span> * uas; 
        <span class="hljs-keyword">char</span> ket; 
        
        <span class="hljs-keyword">if</span> (akhir &gt;= <span class="hljs-number">88</span>) ket=<span class="hljs-string">'A'</span>; 
        <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (akhir &gt;= <span class="hljs-number">76</span>) ket=<span class="hljs-string">'B'</span>; 
        <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (akhir &gt;= <span class="hljs-number">56</span>) ket=<span class="hljs-string">'C'</span>; 
        <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (akhir &gt;= <span class="hljs-number">45</span>) ket=<span class="hljs-string">'D'</span>; 
        <span class="hljs-keyword">else</span> ket=<span class="hljs-string">'E'</span>; [cite: <span class="hljs-number">967</span>]
        
        System.out.println(<span class="hljs-string">"Nilai akhir: "</span> + akhir); 
        System.out.println(<span class="hljs-string">"Nilai Huruf: "</span> + ket); 
    }
}</code></pre>
</div>
</div>
</div>
<h2 data-path-to-node="18"><strong data-path-to-node="18" data-index-in-node="0">2. Menggunakan Class BufferedReader</strong></h2>
<p data-path-to-node="20"><span data-path-to-node="20,0"><code data-path-to-node="20,0" data-index-in-node="0"><span class="citation-542">BufferedReader</span></code><span class="citation-542"> adalah kelas yang memungkinkan pembacaan data dari piranti berbasis karakter, misalnya dari berkas teks atau dari keyboard</span></span><span data-path-to-node="20,2">. </span><span data-path-to-node="20,4"><i data-path-to-node="20,4" data-index-in-node="0"><span class="citation-541">Method</span></i><span class="citation-541"> penting dalam </span><code data-path-to-node="20,4" data-index-in-node="21"><span class="citation-541">BufferedReader</span></code><span class="citation-541"> adalah </span><code data-path-to-node="20,4" data-index-in-node="43"><span class="citation-541">readLine()</span></code><span class="citation-541">, yang memungkinkan pembacaan sebuah baris teks</span></span><span data-path-to-node="20,6">.</span></p>
<p id="p-rc_0f82df9927808cb6-145" data-path-to-node="20"></p>
<h3 data-path-to-node="21"><strong data-path-to-node="21" data-index-in-node="0">Langkah-langkah Menggunakan BufferedReader</strong></h3>
<p data-path-to-node="22">Proses inisialisasi <code data-path-to-node="22" data-index-in-node="20">BufferedReader</code> sedikit lebih panjang dibandingkan <code data-path-to-node="22" data-index-in-node="70">Scanner</code>:</p>
<ul>
<li data-path-to-node="23,0,0"><span data-path-to-node="23,0,0,1"><span class="citation-540">Mengimport kelas yang dibutuhkan pada </span><i data-path-to-node="23,0,0,1" data-index-in-node="38"><span class="citation-540">package</span></i> <code data-path-to-node="23,0,0,1" data-index-in-node="46"><span class="citation-540">java.io</span></code><span class="citation-540">, yaitu </span><code data-path-to-node="23,0,0,1" data-index-in-node="61"><span class="citation-540">BufferedReader</span></code><span class="citation-540">, </span><code data-path-to-node="23,0,0,1" data-index-in-node="77"><span class="citation-540">InputStreamReader</span></code><span class="citation-540">, dan </span><code data-path-to-node="23,0,0,1" data-index-in-node="100"><span class="citation-540">IOException</span></code> </span><span data-path-to-node="23,0,0,3">.</span></li>
<li data-path-to-node="23,1,0"><span data-path-to-node="23,1,0,1"><span class="citation-539">Membuat objek referensi sebagai media input data</span></span><span data-path-to-node="23,1,0,3">. </span><span data-path-to-node="23,1,0,5"><span class="citation-538">Contoh pembuatannya: </span><code data-path-to-node="23,1,0,5" data-index-in-node="21"><span class="citation-538">BufferedReader br = new BufferedReader(new InputStreamReader(System.in));</span></code> </span><span data-path-to-node="23,1,0,7">.</span></li>
<li data-path-to-node="23,2,0"><span data-path-to-node="23,2,0,1"><span class="citation-537">Memanggil </span><i data-path-to-node="23,2,0,1" data-index-in-node="10"><span class="citation-537">method</span></i> <code data-path-to-node="23,2,0,1" data-index-in-node="17"><span class="citation-537">readLine()</span></code><span class="citation-537"> melalui objek referensi tadi</span></span><span data-path-to-node="23,2,0,3">.</span></li>
<li data-path-to-node="23,3,0"><span data-path-to-node="23,3,0,1"><span class="citation-536">Hasil yang diterima dari </span><code data-path-to-node="23,3,0,1" data-index-in-node="25"><span class="citation-536">readLine()</span></code><span class="citation-536"> selalu dalam bentuk String, jadi jika ingin mengubah ke tipe data lain maka harus melakukan konversi (misalnya menggunakan </span><code data-path-to-node="23,3,0,1" data-index-in-node="159"><span class="citation-536">Integer.parseInt()</span></code><span class="citation-536">)</span></span><span data-path-to-node="23,3,0,3">.</span></li>
<li id="p-rc_0f82df9927808cb6-150" data-path-to-node="23,4,0"><span data-path-to-node="23,4,0,1"><span class="citation-535">Penggunaannya diwajibkan menggunakan blok </span><code data-path-to-node="23,4,0,1" data-index-in-node="42"><span class="citation-535">try and catch</span></code><span class="citation-535"> untuk menangani potensi </span><i data-path-to-node="23,4,0,1" data-index-in-node="80"><span class="citation-535">error</span></i><span class="citation-535"> saat input</span></span><span data-path-to-node="23,4,0,3">.</span></li>
</ul>
<h3 data-path-to-node="24"><strong data-path-to-node="24" data-index-in-node="0">Contoh Program dengan BufferedReader</strong></h3>
<p data-path-to-node="25">Berikut adalah program penghitungan nilai yang sama, namun diimplementasikan menggunakan <code data-path-to-node="25" data-index-in-node="89">BufferedReader</code>:</p>
<div class="code-block ng-tns-c1953118146-120 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjB8tqGiPaSAxUAAAAAHQAAAAAQ3wI">
<div class="formatted-code-block-internal-container ng-tns-c1953118146-120">
<div class="animated-opacity ng-tns-c1953118146-120">
<pre class="ng-tns-c1953118146-120"><code class="code-container formatted ng-tns-c1953118146-120" role="text" data-test-id="code-content"><span class="hljs-keyword">import</span> java.io.*; 
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">contohBufferedReader</span></span>{ 
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String[] args)</span> </span>{ 
        <span class="hljs-keyword">try</span>{ 
            BufferedReader br = <span class="hljs-keyword">new</span> BufferedReader(<span class="hljs-keyword">new</span> InputStreamReader(System.in)); 
            
            System.out.print(<span class="hljs-string">"NPM: "</span>); 
            String npm = br.readLine(); 
            
            System.out.print(<span class="hljs-string">"Nama : "</span>); 
            String nama = br.readLine(); 
            
            System.out.print(<span class="hljs-string">"Nilai Tugas: "</span>); 
            String TUGAS = br.readLine(); 
            <span class="hljs-keyword">int</span> tgs = Integer.parseInt(TUGAS); 
            
            System.out.print(<span class="hljs-string">"Nilai UTS: "</span>); 
            String UTS = br.readLine(); 
            <span class="hljs-keyword">int</span> uts = Integer.parseInt(UTS); 
            
            System.out.print(<span class="hljs-string">"Nilai UAS: "</span>); 
            String UAS = br.readLine(); 
            <span class="hljs-keyword">int</span> uas = Integer.parseInt(UAS); 
            
            <span class="hljs-keyword">double</span> akhir = <span class="hljs-number">0.2</span> * tgs + <span class="hljs-number">0.3</span> * uts + <span class="hljs-number">0.5</span> * uas; 
            <span class="hljs-keyword">char</span> ket; 
            
            <span class="hljs-keyword">if</span> (akhir &gt;= <span class="hljs-number">88</span>) ket=<span class="hljs-string">'A'</span>; 
            <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (akhir &gt;= <span class="hljs-number">76</span>) ket=<span class="hljs-string">'B'</span>; 
            <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (akhir &gt;= <span class="hljs-number">56</span>) ket=<span class="hljs-string">'C'</span>; 
            <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (akhir &gt;= <span class="hljs-number">45</span>) ket=<span class="hljs-string">'D'</span>; 
            <span class="hljs-keyword">else</span> ket=<span class="hljs-string">'E'</span>; 
            
            System.out.println(<span class="hljs-string">"Nilai akhir: "</span> + akhir); 
            System.out.println(<span class="hljs-string">"Nilai Huruf: "</span> + ket); 
            
        } <span class="hljs-keyword">catch</span> (IOException e) { 
            System.out.println(<span class="hljs-string">"Ada kesalahan"</span> + e.getMessage());
        }
    }
}</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="28"><strong data-path-to-node="28" data-index-in-node="0">Kesimpulan</strong></h3>
<p data-path-to-node="29"><code data-path-to-node="29" data-index-in-node="0">Scanner</code> dan <code data-path-to-node="29" data-index-in-node="12">BufferedReader</code> memiliki fungsi dasar yang sama, yaitu menangkap input pengguna. Pilihlah <code data-path-to-node="29" data-index-in-node="101">Scanner</code> untuk kepraktisan <i data-path-to-node="29" data-index-in-node="127">parsing</i> data langsung ke tipe angka, atau gunakan <code data-path-to-node="29" data-index-in-node="177">BufferedReader</code> jika Anda berfokus pada pembacaan teks karakter berbasis baris yang memerlukan efisiensi lebih tinggi.</p>
<p id="p-rc_0f82df9927808cb6-151" data-path-to-node="31"><span data-path-to-node="31,0"><strong data-path-to-node="31,0" data-index-in-node="0"><span class="citation-534">Tantangan:</span></strong><span class="citation-534"> Buat dua program menggunakan </span><code data-path-to-node="31,0" data-index-in-node="40"><span class="citation-534">Scanner</span></code><span class="citation-534"> dan </span><code data-path-to-node="31,0" data-index-in-node="52"><span class="citation-534">BufferedReader</span></code></span><span data-path-to-node="31,2">. Buatlah program kalkulator sederhana yang meminta input dua buah angka dan satu buah operator matematika dari pengguna, lalu tampilkan hasilnya!</span></p>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Operasi Teks Java: Baca Tulis File dengan FileReader &amp; FileWriter</title>
        <author>
            <name>Abdan A. S.</name>
        </author>
        <link href="https://informatikainsight.netlify.app/operasi-teks-java-reader-writer.html"/>
        <id>https://informatikainsight.netlify.app/operasi-teks-java-reader-writer.html</id>
            <category term="Pemrograman"/>
            <category term="Java"/>

        <updated>2026-02-02T13:22:59+07:00</updated>
            <summary>
                <![CDATA[
                    Pada materi sebelumnya tentang Stream, kita bekerja dengan data yang berorientasi pada byte. Namun, bagaimana jika kita ingin memproses data&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <p><span data-path-to-node="2,0">Pada materi sebelumnya tentang <i data-path-to-node="2,0" data-index-in-node="31">Stream</i>, kita bekerja dengan data yang berorientasi pada <strong data-path-to-node="2,0" data-index-in-node="87">byte</strong>. Namun, bagaimana jika kita ingin memproses data berupa teks atau karakter? </span><span data-path-to-node="2,2"><span class="citation-478">Jika menggunakan </span><i data-path-to-node="2,2" data-index-in-node="17"><span class="citation-478">byte stream</span></i><span class="citation-478">, kita perlu melakukan </span><i data-path-to-node="2,2" data-index-in-node="51"><span class="citation-478">type casting</span></i><span class="citation-478"> manual untuk mengubah byte menjadi karakter, yang tentu merepotkan</span></span><span data-path-to-node="2,4">.</span></p>
<p data-path-to-node="3"><span data-path-to-node="3,0">Untuk mengatasi hal ini, Java menyediakan kelas <strong data-path-to-node="3,0" data-index-in-node="48">Reader</strong> dan <strong data-path-to-node="3,0" data-index-in-node="59">Writer</strong>. </span><span data-path-to-node="3,2"><span class="citation-477">Kelas-kelas ini dirancang khusus untuk menangani operasi berkas teks, sehingga Anda tidak perlu lagi melakukan pengkonversian tipe data secara manual</span></span><span data-path-to-node="3,4">.</span></p>
<div>
<h3 data-path-to-node="5"><strong data-path-to-node="5" data-index-in-node="0">Perbedaan Byte Stream dan Character Stream</strong></h3>
<p data-path-to-node="6">Secara sederhana, jika <code data-path-to-node="6" data-index-in-node="23">InputStream</code> dan <code data-path-to-node="6" data-index-in-node="39">OutputStream</code> adalah untuk data mentah (byte), maka <code data-path-to-node="6" data-index-in-node="90">Reader</code> dan <code data-path-to-node="6" data-index-in-node="101">Writer</code> adalah untuk data teks (karakter). Berikut adalah padanan kelas-kelasnya:</p>
<table style="width: 100%; height: 779.577px;" data-path-to-node="7">
<thead>
<tr style="height: 48.5625px;">
<td style="width: 47.9479%; height: 48.5625px;"><strong>Byte Stream (Data Mentah)</strong></td>
<td style="width: 51.9097%; height: 48.5625px;"><strong>Character Stream (Data Teks)</strong></td>
</tr>
</thead>
<tbody>
<tr style="height: 215.953px;">
<td style="width: 47.9479%; height: 215.953px;"><span data-path-to-node="7,1,0,0"><code data-path-to-node="7,1,0,0" data-index-in-node="0">InputStream</code></span></td>
<td style="width: 51.9097%; height: 215.953px;">
<p data-path-to-node="7,1,1,0"> </p>
<p data-path-to-node="7,1,1,1"><span data-path-to-node="7,1,1,1,0"><strong data-path-to-node="7,1,1,1,0" data-index-in-node="0"><code data-path-to-node="7,1,1,1,0" data-index-in-node="0"><span class="citation-476">Reader</span></code></strong> </span></p>
<div class="source-inline-chip-container ng-star-inserted"> </div>
<p> </p>
</td>
</tr>
<tr style="height: 215.953px;">
<td style="width: 47.9479%; height: 215.953px;"><span data-path-to-node="7,2,0,0"><code data-path-to-node="7,2,0,0" data-index-in-node="0">OutputStream</code></span></td>
<td style="width: 51.9097%; height: 215.953px;">
<p data-path-to-node="7,2,1,0"> </p>
<p data-path-to-node="7,2,1,1"><span data-path-to-node="7,2,1,1,0"><strong data-path-to-node="7,2,1,1,0" data-index-in-node="0"><code data-path-to-node="7,2,1,1,0" data-index-in-node="0"><span class="citation-475">Writer</span></code></strong> </span></p>
<div class="source-inline-chip-container ng-star-inserted"> </div>
<p> </p>
</td>
</tr>
<tr style="height: 165.953px;">
<td style="width: 47.9479%; height: 165.953px;"><span data-path-to-node="7,3,0,0"><code data-path-to-node="7,3,0,0" data-index-in-node="0">FileInputStream</code></span></td>
<td style="width: 51.9097%; height: 165.953px;">
<p data-path-to-node="7,3,1,0"> </p>
<p data-path-to-node="7,3,1,1"><span data-path-to-node="7,3,1,1,0"><strong data-path-to-node="7,3,1,1,0" data-index-in-node="0"><code data-path-to-node="7,3,1,1,0" data-index-in-node="0"><span class="citation-474">FileReader</span></code></strong> </span></p>
<div class="source-inline-chip-container ng-star-inserted"> </div>
<p> </p>
</td>
</tr>
<tr style="height: 133.156px;">
<td style="width: 47.9479%; height: 133.156px;"><span data-path-to-node="7,4,0,0"><code data-path-to-node="7,4,0,0" data-index-in-node="0">FileOutputStream</code></span></td>
<td style="width: 51.9097%; height: 133.156px;">
<p data-path-to-node="7,4,1,0"> </p>
<p data-path-to-node="7,4,1,1"><span data-path-to-node="7,4,1,1,0"><strong data-path-to-node="7,4,1,1,0" data-index-in-node="0"><code data-path-to-node="7,4,1,1,0" data-index-in-node="0"><span class="citation-473">FileWriter</span></code></strong> </span></p>
</td>
</tr>
</tbody>
</table>
</div>
<h3 data-path-to-node="9"><strong data-path-to-node="9" data-index-in-node="0">Membaca File Teks dengan FileReader</strong></h3>
<p data-path-to-node="11"><span data-path-to-node="11,0"><strong data-path-to-node="11,0" data-index-in-node="0"><code data-path-to-node="11,0" data-index-in-node="0"><span class="citation-472">FileReader</span></code></strong><span class="citation-472"> adalah kelas yang digunakan untuk membuka dan membaca sebuah berkas berbasis karakter</span></span><span data-path-to-node="11,2">. Agar pembacaan lebih efisien (misalnya membaca per baris), <code data-path-to-node="11,2" data-index-in-node="61">FileReader</code> sering dikombinasikan dengan <strong data-path-to-node="11,2" data-index-in-node="101"><code data-path-to-node="11,2" data-index-in-node="101">BufferedReader</code></strong>.</span></p>
<h4 data-path-to-node="12"><strong data-path-to-node="12" data-index-in-node="0">Studi Kasus: Menghitung Nilai Mahasiswa</strong></h4>
<p data-path-to-node="13">Misalkan kita memiliki file <code data-path-to-node="13" data-index-in-node="28">nilai.txt</code> yang berisi data nilai mentah dengan format posisi karakter tertentu (fixed-width).</p>
<p data-path-to-node="14"><strong data-path-to-node="14" data-index-in-node="0">Isi file <code data-path-to-node="14" data-index-in-node="9">nilai.txt</code>:</strong></p>
<div class="code-block ng-tns-c1490245817-241 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQ5QU">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-241">
<div class="animated-opacity ng-tns-c1490245817-241">
<pre class="ng-tns-c1490245817-241"><code class="code-container formatted ng-tns-c1490245817-241" role="text" data-test-id="code-content">0800700700
0900760870
...
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="16"><strong data-path-to-node="16" data-index-in-node="0">Kode Program:</strong></p>
<div class="code-block ng-tns-c1490245817-242 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQ5gU">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-242">
<div class="animated-opacity ng-tns-c1490245817-242">
<pre class="ng-tns-c1490245817-242"><code class="code-container formatted ng-tns-c1490245817-242" role="text" data-test-id="code-content"><span class="hljs-keyword">import</span> java.io.*;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">HitungNilai</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String args[])</span> </span>{
        String str;
        <span class="hljs-keyword">int</span> tgs, uts, uas;
        <span class="hljs-keyword">double</span> nilai;
        
        <span class="hljs-keyword">try</span> {
            <span class="hljs-comment">// Membuka file nilai.txt</span>
            FileReader fr = <span class="hljs-keyword">new</span> FileReader(<span class="hljs-string">"D:/data/nilai.txt"</span>); 
            BufferedReader br = <span class="hljs-keyword">new</span> BufferedReader(fr); 
            
            <span class="hljs-comment">// Membaca baris demi baris</span>
            <span class="hljs-keyword">while</span> ((str = br.readLine()) != <span class="hljs-keyword">null</span>) { 
                <span class="hljs-comment">// Mengambil potongan string (parsing) berdasarkan posisi karakter</span>
                tgs = Integer.parseInt(str.substring(<span class="hljs-number">1</span>, <span class="hljs-number">3</span>)); 
                uts = Integer.parseInt(str.substring(<span class="hljs-number">4</span>, <span class="hljs-number">6</span>)); 
                uas = Integer.parseInt(str.substring(<span class="hljs-number">7</span>, <span class="hljs-number">9</span>)); 
                
                <span class="hljs-comment">// Menghitung Nilai Akhir</span>
                nilai = (<span class="hljs-number">20</span> * tgs + <span class="hljs-number">30</span> * uts + <span class="hljs-number">50</span> * uas) / <span class="hljs-number">100.0</span>; 
                
                System.out.printf(<span class="hljs-string">"tugas %d uts %d uas %d nilai %.2f\n"</span>, tgs, uts, uas, nilai); 
            }
            br.close(); <br>
        } <span class="hljs-keyword">catch</span> (IOException e) {
            System.err.println(<span class="hljs-string">"File read error"</span>); 
        }
    }
}
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="18">Program di atas membaca teks, memotong string (<i data-path-to-node="18" data-index-in-node="47">substring</i>) untuk mendapatkan angka Tugas, UTS, dan UAS, lalu menghitung rata-ratanya secara otomatis.</p>
<h3 data-path-to-node="20"><strong data-path-to-node="20" data-index-in-node="0">Menulis File Teks dengan FileWriter</strong></h3>
<p data-path-to-node="22"><span data-path-to-node="22,0"><strong data-path-to-node="22,0" data-index-in-node="0"><code data-path-to-node="22,0" data-index-in-node="0"><span class="citation-471">FileWriter</span></code></strong><span class="citation-471"> adalah kelas yang digunakan untuk menciptakan atau menulis ke suatu berkas berbasis karakter</span></span><span data-path-to-node="22,2">. Sama seperti saat membaca, kita bisa menggunakan <strong data-path-to-node="22,2" data-index-in-node="51"><code data-path-to-node="22,2" data-index-in-node="51">BufferedWriter</code></strong> untuk performa penulisan yang lebih baik.</span></p>
<h4 data-path-to-node="23"><strong data-path-to-node="23" data-index-in-node="0">Contoh Program Menulis File</strong></h4>
<p data-path-to-node="24">Berikut adalah cara membuat file <code data-path-to-node="24" data-index-in-node="33">CobaFile.txt</code> dan mengisinya dengan beberapa baris teks.</p>
<div class="code-block ng-tns-c1490245817-243 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQ5wU">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-243">
<div class="animated-opacity ng-tns-c1490245817-243">
<pre class="ng-tns-c1490245817-243"><code class="code-container formatted ng-tns-c1490245817-243" role="text" data-test-id="code-content"><span class="hljs-keyword">import</span> java.io.*;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TulisFile2</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String args[])</span> </span>{
        <span class="hljs-keyword">try</span> {
            <span class="hljs-comment">// Membuat file baru di lokasi tujuan</span>
            FileWriter fw = <span class="hljs-keyword">new</span> FileWriter(<span class="hljs-string">"D:/Data/CobaFile.txt"</span>); 
            BufferedWriter bw = <span class="hljs-keyword">new</span> BufferedWriter(fw); 
            
            <span class="hljs-comment">// Menulis teks ke dalam file</span>
            bw.write(<span class="hljs-string">"baris kesatu"</span> + <span class="hljs-string">"\n"</span>); 
            bw.write(<span class="hljs-string">"baris kedua"</span> + <span class="hljs-string">"\n"</span>); 
            bw.write(<span class="hljs-string">"baris ketiga"</span> + <span class="hljs-string">"\n"</span>); 
            
            bw.close(); <span class="hljs-comment">// Jangan lupa menutup stream! </span>
        } <span class="hljs-keyword">catch</span> (IOException e) {
            System.err.println(<span class="hljs-string">"Kesalahan pada penulisan text ke File"</span>); 
        }
    }
}
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="26"><span data-path-to-node="26,1"><span class="citation-470">Setelah dijalankan, file </span><code data-path-to-node="26,1" data-index-in-node="25"><span class="citation-470">CobaFile.txt</span></code><span class="citation-470"> akan berisi teks yang Anda tuliskan</span></span><span data-path-to-node="26,3">.</span></p>
<div>
<h3 data-path-to-node="28"><strong data-path-to-node="28" data-index-in-node="0">Kesimpulan</strong></h3>
<p data-path-to-node="29">Menggunakan kelas <strong data-path-to-node="29" data-index-in-node="18"><code data-path-to-node="29" data-index-in-node="18">FileReader</code></strong> dan <strong data-path-to-node="29" data-index-in-node="33"><code data-path-to-node="29" data-index-in-node="33">FileWriter</code></strong> (beserta <code data-path-to-node="29" data-index-in-node="53">BufferedReader</code> dan <code data-path-to-node="29" data-index-in-node="72">BufferedWriter</code>) adalah cara standar dan efisien di Java untuk menangani file teks. Anda tidak perlu memikirkan konversi byte-ke-karakter karena Java menanganinya secara otomatis, membuat kode Anda lebih bersih dan mudah dibaca.</p>
<p data-path-to-node="30"><strong data-path-to-node="30" data-index-in-node="0">Tantangan:</strong> Gabungkan kedua program di atas!</p>
<ol>
<li data-path-to-node="31,0,0">Buat program yang membaca <code data-path-to-node="31,0,0" data-index-in-node="26">nilai.txt</code>.</li>
<li data-path-to-node="31,1,0">Hitung nilai akhirnya.</li>
<li data-path-to-node="31,2,0">Alih-alih menampilkannya di layar, <strong data-path-to-node="31,2,0" data-index-in-node="35">tulis hasilnya ke file baru</strong> bernama <code data-path-to-node="31,2,0" data-index-in-node="71">laporan_nilai.txt</code>.</li>
</ol>
</div>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Mengenal Stream di Java: Membaca dan Menulis File dengan Mudah</title>
        <author>
            <name>Abdan A. S.</name>
        </author>
        <link href="https://informatikainsight.netlify.app/stream-io-java.html"/>
        <id>https://informatikainsight.netlify.app/stream-io-java.html</id>
            <category term="Pemrograman"/>
            <category term="Java"/>

        <updated>2026-02-02T13:12:03+07:00</updated>
            <summary>
                <![CDATA[
                    Dalam pemrograman, seringkali kita perlu berinteraksi dengan sumber data eksternal, seperti membaca data dari file teks atau menyimpan laporan ke&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <p data-path-to-node="2">Dalam pemrograman, seringkali kita perlu berinteraksi dengan sumber data eksternal, seperti membaca data dari file teks atau menyimpan laporan ke dalam dokumen. Di Java, semua proses ini ditangani oleh konsep yang disebut <strong data-path-to-node="2" data-index-in-node="222">Stream</strong>.</p>
<p data-path-to-node="3">Stream adalah jalur abstrak yang menghubungkan program Java Anda dengan sumber data (seperti keyboard atau file) dan tujuan data (seperti layar monitor atau file). Secara umum, Stream terbagi menjadi dua jalur utama:</p>
<ul>
<li data-path-to-node="4,0,0"><strong data-path-to-node="4,0,0" data-index-in-node="0">InputStream:</strong> Jalur untuk membaca data masuk.</li>
<li data-path-to-node="4,1,0"><strong data-path-to-node="4,1,0" data-index-in-node="0">OutputStream:</strong> Jalur untuk mengirim data keluar.</li>
</ul>
<h3 data-path-to-node="6"><strong data-path-to-node="6" data-index-in-node="0">Membaca Data dengan InputStream</strong></h3>
<p data-path-to-node="7">Kelas <code data-path-to-node="7" data-index-in-node="6">InputStream</code> (dari paket <code data-path-to-node="7" data-index-in-node="30">java.io</code>) adalah fondasi untuk semua operasi membaca data. Salah satu turunannya yang paling sering digunakan untuk membaca file adalah <strong data-path-to-node="7" data-index-in-node="165"><code data-path-to-node="7" data-index-in-node="165">FileInputStream</code></strong>.</p>
<h4 data-path-to-node="8"><strong data-path-to-node="8" data-index-in-node="0">Contoh Kasus: Membaca Data Harga dari File</strong></h4>
<p data-path-to-node="9">Misalkan Anda memiliki file <code data-path-to-node="9" data-index-in-node="28">harga.txt</code> di <code data-path-to-node="9" data-index-in-node="41">D:/data/</code> yang berisi daftar kode harga. Kita dapat membuat program untuk membaca dan menampilkannya di layar.</p>
<div class="code-block ng-tns-c1490245817-221 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQlwU">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-221">
<div class="animated-opacity ng-tns-c1490245817-221">
<pre class="ng-tns-c1490245817-221"><code class="code-container formatted ng-tns-c1490245817-221" role="text" data-test-id="code-content"><span class="hljs-keyword">import</span> java.io.*;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">BacaFile</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String args[])</span> </span>{
        <span class="hljs-keyword">try</span> {
            <span class="hljs-comment">// Membuka koneksi ke file</span>
            FileInputStream fs = <span class="hljs-keyword">new</span> FileInputStream(<span class="hljs-string">"D:/data/harga.txt"</span>);
            DataInputStream di = <span class="hljs-keyword">new</span> DataInputStream(fs);

            <span class="hljs-comment">// Membaca file baris demi baris selama data masih tersedia</span>
            <span class="hljs-keyword">while</span> (di.available() != <span class="hljs-number">0</span>) {
                String data = di.readLine();
                System.out.println(data);
            }
            di.close(); <span class="hljs-comment">// Selalu tutup stream setelah selesai!</span>
        } <span class="hljs-keyword">catch</span> (Exception e) {
            System.out.println(<span class="hljs-string">"Ada Kesalahan: "</span> + e.getMessage());
        }
    }
}
</code></pre>
</div>
</div>
</div>
<blockquote data-path-to-node="11">
<p data-path-to-node="11,0"><strong data-path-to-node="11,0" data-index-in-node="0">Tips Pro:</strong> Anda dapat menggabungkan <code data-path-to-node="11,0" data-index-in-node="35">FileInputStream</code> dengan operasi string seperti <code data-path-to-node="11,0" data-index-in-node="81">substring</code> untuk mengolah data mentah dari file menjadi informasi yang lebih bermakna, seperti menghitung rata-rata harga.</p>
</blockquote>
<h3 data-path-to-node="13"><strong data-path-to-node="13" data-index-in-node="0">Menulis Data dengan OutputStream</strong></h3>
<p data-path-to-node="14">Kebalikan dari <code data-path-to-node="14" data-index-in-node="15">InputStream</code>, kelas <strong data-path-to-node="14" data-index-in-node="34"><code data-path-to-node="14" data-index-in-node="34">OutputStream</code></strong> digunakan untuk mengirim data keluar dari program. Untuk menulis data ke dalam file, kita menggunakan kelas turunan <strong data-path-to-node="14" data-index-in-node="163"><code data-path-to-node="14" data-index-in-node="163">FileOutputStream</code></strong>.</p>
<h4 data-path-to-node="15"><strong data-path-to-node="15" data-index-in-node="0">Contoh Kasus: Menyimpan Data Obat ke File</strong></h4>
<p data-path-to-node="16">Berikut adalah contoh program untuk menyimpan daftar obat ke dalam file baru bernama <code data-path-to-node="16" data-index-in-node="85">obat.txt</code>.</p>
<div class="code-block ng-tns-c1490245817-222 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQmAU">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-222">
<div class="animated-opacity ng-tns-c1490245817-222">
<pre class="ng-tns-c1490245817-222"><code class="code-container formatted ng-tns-c1490245817-222" role="text" data-test-id="code-content"><span class="hljs-keyword">import</span> java.io.*;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TulisFile</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String[] args)</span> </span>{
        <span class="hljs-keyword">try</span> {
            <span class="hljs-comment">// Membuka atau membuat file baru untuk ditulis</span>
            FileOutputStream out = <span class="hljs-keyword">new</span> FileOutputStream(<span class="hljs-string">"D:/data/obat.txt"</span>);
            PrintStream p = <span class="hljs-keyword">new</span> PrintStream(out);

            <span class="hljs-comment">// Menulis data baris per baris</span>
            p.println(<span class="hljs-string">"SYR001|Paracetamol|Botol|6500"</span>);
            p.println(<span class="hljs-string">"TAB021|Ambroxol|Tablet|450"</span>);

            p.close(); <span class="hljs-comment">// Tutup stream untuk menyimpan perubahan</span>
            System.out.println(<span class="hljs-string">"Tulis ke file berhasil"</span>);
        } <span class="hljs-keyword">catch</span> (Exception e) {
            System.out.println(<span class="hljs-string">"Kesalahan: "</span> + e.getMessage());
        }
    }
}
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="18">Setelah program ini dijalankan, sebuah file <code data-path-to-node="18" data-index-in-node="44">obat.txt</code> akan otomatis tercipta di folder tujuan dengan isi data yang telah Anda tentukan.</p>
<h3 data-path-to-node="20"><strong data-path-to-node="20" data-index-in-node="0">Kesimpulan</strong></h3>
<p data-path-to-node="21">Menguasai <strong data-path-to-node="21" data-index-in-node="10">Stream I/O</strong> (Input/Output) adalah langkah krusial untuk membuat aplikasi Java yang persisten—aplikasi yang datanya tidak hilang saat program ditutup. Dengan <code data-path-to-node="21" data-index-in-node="166">FileInputStream</code> dan <code data-path-to-node="21" data-index-in-node="186">FileOutputStream</code>, Anda kini dapat membuat program yang bisa membaca konfigurasi, menyimpan laporan, atau memproses data dalam jumlah besar dari file eksternal.</p>
<p data-path-to-node="22"><strong data-path-to-node="22" data-index-in-node="0">Tantangan:</strong> Buatlah program pencatat nilai mahasiswa!</p>
<ol>
<li data-path-to-node="23,0,0">Program pertama meminta input Nilai Tugas, UTS, dan UAS, lalu menyimpannya ke file <code data-path-to-node="23,0,0" data-index-in-node="83">nilai.txt</code>.</li>
<li data-path-to-node="23,1,0">Program kedua membaca file <code data-path-to-node="23,1,0" data-index-in-node="27">nilai.txt</code> tersebut, menghitung Nilai Akhir (rata-rata), dan menampilkannya dalam format tabel yang rapi di layar.</li>
</ol>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Operasi Matematika di Java: Panduan Lengkap Kelas Math</title>
        <author>
            <name>Abdan A. S.</name>
        </author>
        <link href="https://informatikainsight.netlify.app/operasi-matematika-java-kelas-math.html"/>
        <id>https://informatikainsight.netlify.app/operasi-matematika-java-kelas-math.html</id>
            <category term="Pemrograman"/>
            <category term="Java"/>

        <updated>2026-02-02T13:01:42+07:00</updated>
            <summary>
                <![CDATA[
                    Java bukan hanya tentang logika database atau tampilan antarmuka. Bahasa ini juga dilengkapi dengan kemampuan perhitungan matematis yang kuat melalui&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <p data-path-to-node="2"><span data-path-to-node="2,0">Java bukan hanya tentang logika database atau tampilan antarmuka. Bahasa ini juga dilengkapi dengan kemampuan perhitungan matematis yang kuat melalui kelas <code data-path-to-node="2,0" data-index-in-node="156">Math</code>. </span><span data-path-to-node="2,2"><span class="citation-448">Kelas ini merupakan bagian dari paket </span><code data-path-to-node="2,2" data-index-in-node="38"><span class="citation-448">java.lang</span></code><span class="citation-448">, yang berarti Anda dapat langsung menggunakannya tanpa perlu melakukan </span><i data-path-to-node="2,2" data-index-in-node="119"><span class="citation-448">import</span></i><span class="citation-448"> tambahan</span></span><span data-path-to-node="2,4">. </span>Artikel ini akan membahas konstanta dan metode-metode penting dalam kelas <code data-path-to-node="3" data-index-in-node="74">Math</code> yang wajib diketahui oleh setiap programmer Java.</p>
<h3 data-path-to-node="5"><strong data-path-to-node="5" data-index-in-node="0">Konstanta Matematika</strong></h3>
<p data-path-to-node="6"><span data-path-to-node="6,1"><span class="citation-447">Kelas </span><code data-path-to-node="6,1" data-index-in-node="6"><span class="citation-447">Math</span></code><span class="citation-447"> menyediakan dua konstanta fundamental yang sering digunakan dalam perhitungan ilmiah dan geometris</span></span><span data-path-to-node="6,3">:</span></p>
<ul>
<li data-path-to-node="7,0,0"><span data-path-to-node="7,0,0,0"><strong data-path-to-node="7,0,0,0" data-index-in-node="0">Konstanta E (<code data-path-to-node="7,0,0,0" data-index-in-node="13">Math.E</code>):</strong> Menyatakan nilai basis logaritma alami. </span><span data-path-to-node="7,0,0,2"><span class="citation-446">Nilainya didefinisikan sebagai </span><code data-path-to-node="7,0,0,2" data-index-in-node="31"><span class="citation-446">2.71828...</span></code></span><span data-path-to-node="7,0,0,4">.</span></li>
<li data-path-to-node="7,1,0"><span data-path-to-node="7,1,0,0"><strong data-path-to-node="7,1,0,0" data-index-in-node="0">Konstanta PI (<code data-path-to-node="7,1,0,0" data-index-in-node="14">Math.PI</code>):</strong> Menyatakan nilai (Pi), rasio keliling lingkaran terhadap diameternya. </span><span data-path-to-node="7,1,0,2"><span class="citation-445">Nilainya didefinisikan sebagai </span><code data-path-to-node="7,1,0,2" data-index-in-node="31"><span class="citation-445">3.14159...</span></code></span><span data-path-to-node="7,1,0,4">.</span></li>
</ul>
<h3 data-path-to-node="9"><strong data-path-to-node="9" data-index-in-node="0">Metode-Metode Penting Kelas Math</strong></h3>
<p data-path-to-node="10">Kelas <code data-path-to-node="10" data-index-in-node="6">Math</code> berisi berbagai metode statis untuk melakukan operasi numerik. Berikut adalah pengelompokan metode yang paling sering digunakan:</p>
<h4 data-path-to-node="11"><strong data-path-to-node="11" data-index-in-node="0">1. Nilai Mutlak (Absolute)</strong></h4>
<p data-path-to-node="12"><span data-path-to-node="12,0">Metode <code data-path-to-node="12,0" data-index-in-node="7">abs()</code> digunakan untuk mengubah angka negatif menjadi positif. </span><span data-path-to-node="12,2"><span class="citation-444">Metode ini mendukung berbagai tipe data seperti </span><code data-path-to-node="12,2" data-index-in-node="48"><span class="citation-444">double</span></code><span class="citation-444">, </span><code data-path-to-node="12,2" data-index-in-node="56"><span class="citation-444">float</span></code><span class="citation-444">, </span><code data-path-to-node="12,2" data-index-in-node="63"><span class="citation-444">int</span></code><span class="citation-444">, dan </span><code data-path-to-node="12,2" data-index-in-node="72"><span class="citation-444">long</span></code></span><span data-path-to-node="12,4">.</span></p>
<p data-path-to-node="13,0,0">Contoh: <code data-path-to-node="13,0,0" data-index-in-node="8">Math.abs(-2.3)</code> menghasilkan <code data-path-to-node="13,0,0" data-index-in-node="36">2.3</code>.</p>
<h4 data-path-to-node="14"><strong data-path-to-node="14" data-index-in-node="0">2. Nilai Maksimum dan Minimum</strong></h4>
<p data-path-to-node="15">Untuk membandingkan dua bilangan dan mencari mana yang terbesar atau terkecil, Anda bisa menggunakan:</p>
<ul>
<li data-path-to-node="16,0,1"><span data-path-to-node="16,0,1,0"><strong data-path-to-node="16,0,1,0" data-index-in-node="0"><code data-path-to-node="16,0,1,0" data-index-in-node="0"><span class="citation-443">max(a, b)</span></code></strong><span class="citation-443">: Menghasilkan nilai terbesar di antara dua parameter</span></span><span data-path-to-node="16,0,1,2">.</span></li>
<li data-path-to-node="16,1,1"><span data-path-to-node="16,1,1,0"><strong data-path-to-node="16,1,1,0" data-index-in-node="0"><code data-path-to-node="16,1,1,0" data-index-in-node="0"><span class="citation-442">min(a, b)</span></code></strong><span class="citation-442">: Menghasilkan nilai terkecil di antara dua parameter</span></span><span data-path-to-node="16,1,1,2">.</span></li>
</ul>
<h4 data-path-to-node="17"><strong data-path-to-node="17" data-index-in-node="0">3. Perpangkatan dan Akar</strong></h4>
<ul>
<li data-path-to-node="18,0,0"><span data-path-to-node="18,0,0,0"><strong data-path-to-node="18,0,0,0" data-index-in-node="0"><code data-path-to-node="18,0,0,0" data-index-in-node="0">pow(double a, double b)</code></strong>: Digunakan untuk menghitung perpangkatan. </span><span data-path-to-node="18,0,0,2"><span class="citation-441">Perlu dicatat bahwa metode ini dapat menghasilkan eksepsi jika parameter tidak valid</span></span><span data-path-to-node="18,0,0,4">.</span></li>
<li data-path-to-node="18,1,1"><span data-path-to-node="18,1,1,0"><strong data-path-to-node="18,1,1,0" data-index-in-node="0"><code data-path-to-node="18,1,1,0" data-index-in-node="0"><span class="citation-440">sqrt(double a)</span></code></strong><span class="citation-440">: Digunakan untuk menghitung akar kuadrat</span><span class="citation-440"> dari sebuah bilangan</span></span><span data-path-to-node="18,1,1,2">.</span></li>
</ul>
<h4 data-path-to-node="19"><strong data-path-to-node="19" data-index-in-node="0">4. Trigonometri</strong></h4>
<p data-path-to-node="20"><span data-path-to-node="20,0">Java menyediakan metode trigonometri standar. </span><span data-path-to-node="20,2"><span class="citation-439">Penting untuk diingat bahwa parameter sudut harus dalam satuan </span><strong data-path-to-node="20,2" data-index-in-node="63"><span class="citation-439">radian</span></strong><span class="citation-439">, bukan derajat</span></span><span data-path-to-node="20,4">.</span></p>
<ul>
<li data-path-to-node="21,0,0"><code data-path-to-node="21,0,0" data-index-in-node="0">sin(double a)</code></li>
<li data-path-to-node="21,1,0"><code data-path-to-node="21,1,0" data-index-in-node="0">cos(double a)</code></li>
<li data-path-to-node="21,2,0"><code data-path-to-node="21,2,0" data-index-in-node="0">tan(double a)</code></li>
</ul>
<h4 data-path-to-node="22"><strong data-path-to-node="22" data-index-in-node="0">5. Bilangan Acak (Random)</strong></h4>
<p data-path-to-node="23"><span data-path-to-node="23,1"><span class="citation-438">Metode </span><code data-path-to-node="23,1" data-index-in-node="7"><span class="citation-438">random()</span></code><span class="citation-438"> menghasilkan nilai </span><code data-path-to-node="23,1" data-index-in-node="35"><span class="citation-438">double</span></code><span class="citation-438"> acak antara 0.0 (inklusif) hingga 1.0 (eksklusif)</span></span><span data-path-to-node="23,3">.</span></p>
<h3 data-path-to-node="25"><strong data-path-to-node="25" data-index-in-node="0">Contoh Program Implementasi</strong></h3>
<p data-path-to-node="26"><span data-path-to-node="26,1"><span class="citation-437">Berikut adalah contoh kode program sederhana yang menggabungkan penggunaan konstanta dan metode-metode di atas</span></span><span data-path-to-node="26,3">:</span></p>
<div class="code-block ng-tns-c1490245817-209 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQxgQ">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-209">
<div class="animated-opacity ng-tns-c1490245817-209">
<pre class="ng-tns-c1490245817-209"><code class="code-container formatted ng-tns-c1490245817-209" role="text" data-test-id="code-content"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Matematika</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span> <span class="hljs-params">(String [] args)</span> </span>{
        <span class="hljs-comment">// Menampilkan Konstanta</span>
        System.out.println(<span class="hljs-string">"Nilai E  = "</span> + Math.E); 
        System.out.println(<span class="hljs-string">"Nilai PI = "</span> + Math.PI); 

        <span class="hljs-comment">// Operasi Matematika</span>
        System.out.println(<span class="hljs-string">"Nilai Mutlak |-2.3| = "</span> + Math.abs(-<span class="hljs-number">2.3</span>)); 
        System.out.println(<span class="hljs-string">"Nilai Maksimum (2,3) = "</span> + Math.max(<span class="hljs-number">2</span>,<span class="hljs-number">3</span>)); 
        System.out.println(<span class="hljs-string">"Nilai Minimum (2,3)  = "</span> + Math.min(<span class="hljs-number">2</span>,<span class="hljs-number">3</span>)); 
        System.out.println(<span class="hljs-string">"2 Pangkat 3          = "</span> + Math.pow(<span class="hljs-number">2</span>,<span class="hljs-number">3</span>)); 
        System.out.println(<span class="hljs-string">"Akar Kuadrat dari 9  = "</span> + Math.sqrt(<span class="hljs-number">9</span>)); 
    }
}
</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="28"><strong data-path-to-node="28" data-index-in-node="0">Kesimpulan</strong></h3>
<p data-path-to-node="29">Kelas <code data-path-to-node="29" data-index-in-node="6">Math</code> di Java adalah alat bantu yang sangat efisien. Dengan memahami metode seperti <code data-path-to-node="29" data-index-in-node="89">pow</code>, <code data-path-to-node="29" data-index-in-node="94">sqrt</code>, <code data-path-to-node="29" data-index-in-node="100">max</code>, dan konstanta <code data-path-to-node="29" data-index-in-node="119">PI</code>, Anda tidak perlu lagi menulis algoritma manual untuk perhitungan matematika dasar hingga menengah.</p>
<p data-path-to-node="30"><strong data-path-to-node="30" data-index-in-node="0">Tantangan:</strong> Buatlah program untuk menghitung sisi miring (hipotenusa) dari segitiga siku-siku menggunakan rumus Pythagoras. Gunakan <code data-path-to-node="30" data-index-in-node="152">Math.pow</code> untuk menguadratkan sisi dan <code data-path-to-node="30" data-index-in-node="190">Math.sqrt</code> untuk mencari akarnya!</p>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Operasi String di Java: Panduan Lengkap Manipulasi Karakter</title>
        <author>
            <name>Abdan A. S.</name>
        </author>
        <link href="https://informatikainsight.netlify.app/operasi-string-java.html"/>
        <id>https://informatikainsight.netlify.app/operasi-string-java.html</id>
            <category term="Pemrograman"/>
            <category term="Java"/>

        <updated>2026-02-02T12:45:27+07:00</updated>
            <summary>
                <![CDATA[
                    Dalam pemrograman Java, String adalah sebuah kelas yang menangani deretan karakter. Karena String merupakan sebuah kelas, Java menyediakan berbagai metode&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <p><span data-path-to-node="2,1"><span class="citation-403">Dalam pemrograman Java, </span><strong data-path-to-node="2,1" data-index-in-node="24"><span class="citation-403">String</span></strong><span class="citation-403"> adalah sebuah kelas yang menangani deretan karakter</span></span><span data-path-to-node="2,3">. </span><span data-path-to-node="2,5"><span class="citation-402">Karena String merupakan sebuah kelas, Java menyediakan berbagai metode (</span><i data-path-to-node="2,5" data-index-in-node="72"><span class="citation-402">methods</span></i><span class="citation-402">) yang sangat berguna untuk memanipulasi teks secara efisien</span></span><span data-path-to-node="2,7">.</span></p>
<h3 data-path-to-node="4"><strong data-path-to-node="4" data-index-in-node="0">Metode Penting dalam Kelas String</strong></h3>
<p data-path-to-node="5"><span data-path-to-node="5,1"><span class="citation-401">Berikut adalah beberapa metode utama yang sering digunakan dalam pengembangan aplikasi menggunakan Java</span></span><span data-path-to-node="5,3">:</span></p>
<h4 data-path-to-node="6"><strong data-path-to-node="6" data-index-in-node="0">1. Menentukan Panjang String (<code data-path-to-node="6" data-index-in-node="30">length</code>)</strong></h4>
<p data-path-to-node="7"><span data-path-to-node="7,1"><span class="citation-400">Metode </span><code data-path-to-node="7,1" data-index-in-node="7"><span class="citation-400">length()</span></code><span class="citation-400"> digunakan untuk menghitung jumlah karakter dalam sebuah String</span></span><span data-path-to-node="7,3">.</span></p>
<p data-path-to-node="8,0,0"><strong data-path-to-node="8,0,0" data-index-in-node="0">Contoh:</strong></p>
<div class="code-block ng-tns-c1490245817-188 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQ2QM">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-188">
<div class="animated-opacity ng-tns-c1490245817-188">
<pre class="ng-tns-c1490245817-188"><code class="code-container formatted ng-tns-c1490245817-188" role="text" data-test-id="code-content">String kalimat = <span class="hljs-string">"Belajar Pemrograman 3"</span>;
System.out.println(kalimat.length()); <span class="hljs-comment">// Output: 21 </span></code></pre>
</div>
</div>
</div>
<h4 data-path-to-node="9"><strong data-path-to-node="9" data-index-in-node="0">2. Membandingkan Dua String (<code data-path-to-node="9" data-index-in-node="29">equals</code>)</strong></h4>
<p data-path-to-node="10"><span data-path-to-node="10,1"><span class="citation-399">Java menyediakan dua cara utama untuk membandingkan isi String</span></span><span data-path-to-node="10,3">:</span></p>
<ul>
<li data-path-to-node="11,0,1"><span data-path-to-node="11,0,1,0"><strong data-path-to-node="11,0,1,0" data-index-in-node="0"><code data-path-to-node="11,0,1,0" data-index-in-node="0"><span class="citation-398">equals(String s)</span></code></strong><span class="citation-398">: Membandingkan String dengan memperhatikan huruf besar dan kecil (</span><i data-path-to-node="11,0,1,0" data-index-in-node="83"><span class="citation-398">case-sensitive</span></i><span class="citation-398">)</span></span><span data-path-to-node="11,0,1,2">.</span></li>
<li data-path-to-node="11,1,1"><span data-path-to-node="11,1,1,0"><strong data-path-to-node="11,1,1,0" data-index-in-node="0"><code data-path-to-node="11,1,1,0" data-index-in-node="0"><span class="citation-397">equalsIgnoreCase(String s)</span></code></strong><span class="citation-397">: Membandingkan String tanpa memedulikan perbedaan huruf besar dan kecil</span></span><span data-path-to-node="11,1,1,2">.</span></li>
</ul>
<p data-path-to-node="11,2,0"><strong data-path-to-node="11,2,0" data-index-in-node="0">Contoh:</strong></p>
<div class="code-block ng-tns-c1490245817-189 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQ2gM">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-189">
<div class="animated-opacity ng-tns-c1490245817-189">
<pre class="ng-tns-c1490245817-189"><code class="code-container formatted ng-tns-c1490245817-189" role="text" data-test-id="code-content">String kata1 = <span class="hljs-string">"Belajar"</span>;
System.out.println(kata1.equals(<span class="hljs-string">"belajar"</span>)); <span class="hljs-comment">// Output: false </span>System.out.println(kata1.equalsIgnoreCase(<span class="hljs-string">"belajar"</span>)); <span class="hljs-comment">// Output: true </span></code></pre>
</div>
</div>
</div>
<h4 data-path-to-node="12"><strong data-path-to-node="12" data-index-in-node="0">3. Mengubah Kapitalisasi</strong></h4>
<p data-path-to-node="13"><span data-path-to-node="13,1"><span class="citation-396">Anda dapat mengubah seluruh karakter dalam String menjadi huruf besar atau kecil dengan mudah</span></span><span data-path-to-node="13,3">:</span></p>
<ul>
<li data-path-to-node="14,0,1"><span data-path-to-node="14,0,1,0"><strong data-path-to-node="14,0,1,0" data-index-in-node="0"><code data-path-to-node="14,0,1,0" data-index-in-node="0"><span class="citation-395">toLowerCase()</span></code></strong><span class="citation-395">: Mengubah ke huruf kecil semua</span></span><span data-path-to-node="14,0,1,2">.</span></li>
<li data-path-to-node="14,1,1"><span data-path-to-node="14,1,1,0"><strong data-path-to-node="14,1,1,0" data-index-in-node="0"><code data-path-to-node="14,1,1,0" data-index-in-node="0"><span class="citation-394">toUpperCase()</span></code></strong><span class="citation-394">: Mengubah ke huruf besar semua</span></span><span data-path-to-node="14,1,1,2">.</span></li>
</ul>
<h4 data-path-to-node="15"><strong data-path-to-node="15" data-index-in-node="0">4. Menggabungkan String (<code data-path-to-node="15" data-index-in-node="25">concat</code>)</strong></h4>
<p data-path-to-node="16"><span data-path-to-node="16,1"><span class="citation-393">Selain menggunakan operator </span><code data-path-to-node="16,1" data-index-in-node="28"><span class="citation-393">+</span></code><span class="citation-393">, Anda bisa menggunakan metode </span><code data-path-to-node="16,1" data-index-in-node="60"><span class="citation-393">concat()</span></code><span class="citation-393"> untuk menyambungkan dua buah String</span></span><span data-path-to-node="16,3">.</span></p>
<p data-path-to-node="17,0,0"><strong data-path-to-node="17,0,0" data-index-in-node="0">Contoh:</strong></p>
<div class="code-block ng-tns-c1490245817-190 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQ2wM">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-190">
<div class="animated-opacity ng-tns-c1490245817-190">
<pre class="ng-tns-c1490245817-190"><code class="code-container formatted ng-tns-c1490245817-190" role="text" data-test-id="code-content">String kata3 = kata1.concat(<span class="hljs-string">" Pemrograman"</span>); <span class="hljs-comment">// Hasil: "Belajar Pemrograman" </span></code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="19"><strong data-path-to-node="19" data-index-in-node="0">Konversi String ke Numerik</strong></h3>
<p data-path-to-node="20"><span data-path-to-node="20,0">Seringkali data yang diterima dari <i data-path-to-node="20,0" data-index-in-node="35">user</i> berbentuk String, padahal kita perlu melakukan perhitungan matematis. </span><span data-path-to-node="20,2"><span class="citation-392">Java menyediakan metode untuk mengonversi String ke tipe data angka</span></span><span data-path-to-node="20,4">:</span></p>
<ul>
<li data-path-to-node="21,0,1"><span data-path-to-node="21,0,1,0"><strong data-path-to-node="21,0,1,0" data-index-in-node="0"><code data-path-to-node="21,0,1,0" data-index-in-node="0"><span class="citation-391">Integer.parseInt(String s)</span></code></strong><span class="citation-391">: Mengubah String menjadi angka bulat (</span><i data-path-to-node="21,0,1,0" data-index-in-node="65"><span class="citation-391">integer</span></i><span class="citation-391">)</span></span><span data-path-to-node="21,0,1,2">.</span></li>
<li data-path-to-node="21,1,1"><span data-path-to-node="21,1,1,0"><strong data-path-to-node="21,1,1,0" data-index-in-node="0"><code data-path-to-node="21,1,1,0" data-index-in-node="0"><span class="citation-390">Double.parseDouble(String s)</span></code></strong><span class="citation-390">: Mengubah String menjadi angka desimal (</span><i data-path-to-node="21,1,1,0" data-index-in-node="69"><span class="citation-390">double</span></i><span class="citation-390">)</span></span><span data-path-to-node="21,1,1,2">.</span></li>
</ul>
<p data-path-to-node="22"><strong data-path-to-node="22" data-index-in-node="0">Contoh:</strong></p>
<div class="code-block ng-tns-c1490245817-191 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQ3AM">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-191">
<div class="animated-opacity ng-tns-c1490245817-191">
<pre class="ng-tns-c1490245817-191"><code class="code-container formatted ng-tns-c1490245817-191" role="text" data-test-id="code-content">String kata3 = <span class="hljs-string">"3"</span>;
<span class="hljs-keyword">int</span> angka = Integer.parseInt(kata3); 
<span class="hljs-keyword">int</span> nilai = angka + <span class="hljs-number">80</span>; <span class="hljs-comment">// Hasil: 83 </span></code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="25"><strong data-path-to-node="25" data-index-in-node="0">Memotong String dengan Substring</strong></h3>
<p data-path-to-node="26"><span data-path-to-node="26,1"><span class="citation-389">Metode </span><code data-path-to-node="26,1" data-index-in-node="7"><span class="citation-389">substring()</span></code><span class="citation-389"> sangat berguna untuk mengambil sebagian isi dari sebuah variabel String</span></span><span data-path-to-node="26,3">. Ada dua cara penggunaannya:</span></p>
<ol>
<li data-path-to-node="27,0,1"><span data-path-to-node="27,0,1,0"><strong data-path-to-node="27,0,1,0" data-index-in-node="0"><code data-path-to-node="27,0,1,0" data-index-in-node="0"><span class="citation-388">substring(int index)</span></code></strong><span class="citation-388">: Mengambil karakter dari indeks tertentu hingga akhir String</span></span><span data-path-to-node="27,0,1,2">.</span></li>
<li data-path-to-node="27,1,1"><span data-path-to-node="27,1,1,0"><strong data-path-to-node="27,1,1,0" data-index-in-node="0"><code data-path-to-node="27,1,1,0" data-index-in-node="0"><span class="citation-387">substring(int indexAwal, int indexAkhir)</span></code></strong><span class="citation-387">: Mengambil karakter dari </span><code data-path-to-node="27,1,1,0" data-index-in-node="66"><span class="citation-387">indexAwal</span></code><span class="citation-387"> sampai sebelum </span><code data-path-to-node="27,1,1,0" data-index-in-node="91"><span class="citation-387">indexAkhir</span></code><span class="citation-387"> (indeks akhir tidak diikutkan)</span></span><span data-path-to-node="27,1,1,2">.</span></li>
</ol>
<p data-path-to-node="28"><span data-path-to-node="28,0"><strong data-path-to-node="28,0" data-index-in-node="0">Contoh Visualisasi Indeks:</strong> Kalimat: <code data-path-to-node="28,0" data-index-in-node="36">"Belajar"</code> </span><span data-path-to-node="28,2"><span class="citation-386">Indeks: </span><code data-path-to-node="28,2" data-index-in-node="8"><span class="citation-386">0=B, 1=e, 2=l, 3=a, 4=j, 5=a, 6=r</span></code> </span><span data-path-to-node="28,5"><code data-path-to-node="28,5" data-index-in-node="0"><span class="citation-385">kalimat.substring(0, 4)</span></code><span class="citation-385"> akan menghasilkan </span><code data-path-to-node="28,5" data-index-in-node="42"><span class="citation-385">"Bela"</span></code></span><span data-path-to-node="28,7">.</span></p>
<h3 data-path-to-node="30"><strong data-path-to-node="30" data-index-in-node="0">Contoh Program Kreatif</strong></h3>
<p data-path-to-node="31"><span data-path-to-node="31,1"><span class="citation-384">Anda dapat mengombinasikan </span><code data-path-to-node="31,1" data-index-in-node="27"><span class="citation-384">substring()</span></code><span class="citation-384"> dengan perulangan (</span><i data-path-to-node="31,1" data-index-in-node="58"><span class="citation-384">looping</span></i><span class="citation-384">) untuk menciptakan efek tampilan teks yang menarik</span></span><span data-path-to-node="31,3">.</span></p>
<div class="code-block ng-tns-c1490245817-192 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQ3QM">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-192">
<div class="animated-opacity ng-tns-c1490245817-192">
<pre class="ng-tns-c1490245817-192"><code class="code-container formatted ng-tns-c1490245817-192" role="text" data-test-id="code-content"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">contoh_substring2</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span> <span class="hljs-params">(String args[])</span> </span>{
        String f = <span class="hljs-string">"Pemrograman Java"</span>; 
        <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i=<span class="hljs-number">1</span>; i&lt;=f.length(); i++) {
            System.out.println(f.substring(<span class="hljs-number">0</span>, i)); <span class="hljs-comment">// Mencetak teks secara bertahap </span>
        }
    }
}
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="33"><strong data-path-to-node="33" data-index-in-node="0">Hasil Output:</strong></p>
<div class="code-block ng-tns-c1490245817-193 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwigiaqYh7qSAxUAAAAAHQAAAAAQ3gM">
<div class="formatted-code-block-internal-container ng-tns-c1490245817-193">
<div class="animated-opacity ng-tns-c1490245817-193">
<pre class="ng-tns-c1490245817-193"><code class="code-container formatted ng-tns-c1490245817-193 no-decoration-radius" role="text" data-test-id="code-content">P
Pe
Pem
...
Pemrograman Java 
</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="35"><strong data-path-to-node="35" data-index-in-node="0">Kesimpulan</strong></h3>
<p data-path-to-node="36">Memahami operasi String adalah keahlian dasar yang wajib dimiliki oleh setiap pengembang Java. Dengan menguasai metode-metode di atas, Anda dapat mengolah data teks, melakukan validasi login, hingga memformat tampilan data dengan lebih profesional.</p>
<p data-path-to-node="38"><span data-path-to-node="38,0"><strong data-path-to-node="38,0" data-index-in-node="0"><span class="citation-383">Tantangan:</span></strong><span class="citation-383"> Berdasarkan contoh program di atas, cobalah buat program yang menampilkan teks secara terbalik, dimulai dari String utuh hingga tersisa satu karakter terakhir saja! </span></span></p>
            ]]>
        </content>
    </entry>
</feed>
