0Pricing
Java Academy · Pelajaran

Pass-by-Value dalam Java

Pahami pass-by-value dalam Java: tipe primitif dan referensi, penetapan ulang dan mutasi, serta kendala umum pada array dan ketidakberubahan.

Pass-by-Value dalam Java adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 3 pelajaran total.

Ikhtisar Penerusan Berdasarkan Nilai

Tujuan: Mempelajari cara Java meneruskan parameter. Bandingkan tipe primitif dan referensi, penetapan ulang dan modifikasi, larik, serta ketidakmampuan untuk diubah.

Salinan Primitif

Tipe primitif diteruskan berdasarkan nilai: metode yang dipanggil menerima salinan. Menetapkan ulang parameter tidak mengubah variabel milik pemanggil.

public class Main {
  static void inc(int x) {
    x = x + 1; // modifies the local copy only
  }
  public static void main(String[] args) {
    int a = 5;
    inc(a);
    System.out.println("a after inc(a) = " + a); // still 5
  }
}

Referensi: Modifikasi vs Penetapan Ulang

Untuk objek, referensinya disalin. Memodifikasi objek melalui referensi tersebut memengaruhi objek milik pemanggil; menetapkan ulang parameter tidak memengaruhinya.

public class Main {
  static class Box { int n; }
  static void setTo999(Box b) { b.n = 999; } // mutate via copied reference
  static void reassign(Box b) { b = new Box(); b.n = 123; } // reassign local copy only
  public static void main(String[] args) {
    Box bx = new Box();
    bx.n = 10;
    setTo999(bx);
    System.out.println("after setTo999: bx.n = " + bx.n); // 999
    reassign(bx);
    System.out.println("after reassign: bx.n = " + bx.n); // still 999
  }
}

Larik: Modifikasi vs Penetapan Ulang

Larik adalah objek. Lakukan modifikasi untuk memengaruhi larik milik pemanggil; menetapkan ulang parameter tidak mengganti larik milik pemanggil.

public class Main {
  static void fillZero(int[] a) {
    for (int i = 0; i < a.length; i = i + 1) a[i] = 0; // mutate caller array
  }
  static void replace(int[] a) {
    a = new int[] {9, 9, 9}; // reassign local copy of the reference
  }
  public static void main(String[] args) {
    int[] arr = {1, 2, 3};
    fillZero(arr);
    System.out.println("after fillZero: " + arr[0] + "," + arr[1] + "," + arr[2]); // 0,0,0
    replace(arr);
    System.out.println("after replace:  " + arr[0] + "," + arr[1] + "," + arr[2]); // still 0,0,0
  }
}

Tidak Dapat Diubah vs Dapat Diubah

String tidak dapat diubah (mengembalikan objek baru); StringBuilder dapat diubah (mengubah instans yang sama).

public class Main {
  static void tryChangeString(String s) {
    s = s + "!"; // new String; original unchanged
  }
  static void changeBuilder(StringBuilder sb) {
    sb.append("!"); // mutates same object
  }
  public static void main(String[] args) {
    String s = "hi";
    tryChangeString(s);
    System.out.println("after tryChangeString: " + s); // "hi"

    StringBuilder sb = new StringBuilder("hi");
    changeBuilder(sb);
    System.out.println("after changeBuilder:  " + sb.toString()); // "hi!"
  }
}

Menukar dengan Benar

Karena parameter adalah salinan, menukar tipe primitif di dalam metode tidak memengaruhi pemanggil. Kembalikan nilai baru (atau objek penampung).

public class Main {
  static void trySwap(int a, int b) {
    int t = a; a = b; b = t; // swaps local copies only
  }
  static int[] swap(int a, int b) {
    return new int[] { b, a }; // return results to the caller
  }
  public static void main(String[] args) {
    int x = 1, y = 2;
    trySwap(x, y);
    System.out.println("after trySwap: x=" + x + ", y=" + y); // 1,2
    int[] res = swap(x, y);
    x = res[0]; y = res[1];
    System.out.println("after swap:    x=" + x + ", y=" + y); // 2,1
  }
}

Pemeriksaan Penerusan Berdasarkan Nilai

Pemeriksaan singkat: Pernyataan manakah tentang penerusan parameter Java yang benar?

Ringkasan & Berikutnya

Ringkasan: Anda melihat tipe primitif vs referensi, modifikasi vs penetapan ulang, larik sebagai objek, ketidakmampuan untuk diubah, dan pola pertukaran yang aman. Berikutnya: Metode Statis vs Instans.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pass-by-Value dalam Java” gratis?

Ya — teks lengkap “Pass-by-Value dalam Java” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Pass-by-Value dalam Java”?

Pahami pass-by-value dalam Java: tipe primitif dan referensi, penetapan ulang dan mutasi, serta kendala umum pada array dan ketidakberubahan. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.

Berapa lama pelajaran “Pass-by-Value dalam Java” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pass-by-Value dalam Java
  2. Metode Statis dan Instans
  3. Dekomposisi Metode dan Kode Bersih
← Kembali ke Java Academy