CodeGym /Java Blog /Acak /Autoboxing dan Unboxing di Java
John Squirrels
Level 41
San Francisco

Autoboxing dan Unboxing di Java

Dipublikasikan di grup Acak
Di Java, fitur primitif dan pembungkusnya adalah autoboxing/unboxing. Mari kita gali konsep ini. Seperti yang telah kita pelajari, Java adalah bahasa berorientasi objek. Artinya semua program yang ditulis di Java terbuat dari objek. Primitif bukanlah objek. Namun demikian, variabel wrapper dapat diberi nilai primitif. Proses ini disebut autoboxing. Demikian pula, variabel primitif dapat diberi objek pembungkus. Proses ini disebut unboxing. Misalnya:
public class Main {
   public static void main(String[] args) {
       int x = 7;
       Integer y = 111;
       x = y; // Unboxing
       y = x * 123; // Autoboxing
   }
}
Pada baris 5, kita menugaskan y, yang merupakan objek Integer , ke x primitif . Seperti yang Anda lihat, kita tidak perlu mengambil langkah tambahan apa pun: kompiler mengetahui bahwa int dan Integer pada dasarnya adalah hal yang sama. Itu membuka kotak. Hal serupa terjadi dengan autoboxing pada baris 6: nilai primitif (x * 123) dengan mudah ditetapkan ke objek y . Ini adalah contoh autoboxing. Itu sebabnya istilah ini menyertakan kata "auto": karena Anda tidak perlu melakukan sesuatu yang khusus untuk menetapkan primitif ke objek pembungkusnya yang sesuai (dan sebaliknya). Itu semua terjadi secara otomatis. Nyaman, ya? :) Kita melihat contoh lain kenyamanan autoboxing/unboxing saat bekerja dengan metode. Hal ini karena argumen metode juga di-autobox dan tidak di-box. Misalnya, jika suatu metode mengambil dua objek Integer sebagai masukan, kita dapat dengan mudah meneruskan int biasa !
public class Main {
   public static void main(String[] args) {

       printNumber(7);// A standard int, not even an int variable
   }

   public static void printNumber(Integer i) {
       System.out.println("You entered the number " + i);
   }
}
Keluaran:
You entered the number 7
Ia juga bekerja ke arah lain:
public class Main {
   public static void main(String[] args) {

       printNumber(new Integer(632));
   }

   public static void printNumber(int i) {
       System.out.println("You entered the number " + i);
   }
}
Poin penting yang perlu Anda ingat adalah: autoboxing dan unboxing tidak berfungsi untuk array!
public class Main {
   public static void main(String[] args) {

       int[] i = {1,2,3,4,5};

       printArray(i);// Error, this won't compile!
   }

   public static void printArray(Integer[] arr) {
       System.out.println(Arrays.toString(arr));
   }
}
Mencoba meneruskan array primitif ke metode yang menggunakan array objek akan menghasilkan kesalahan kompilasi. Sebagai kesimpulan, mari kita bandingkan secara singkat primitif dan wraper sekali lagi.

Primitif:

  • Memiliki keunggulan kinerja
Pembungkus:
  • Izinkan kami untuk tidak melanggar prinsip "semuanya adalah objek", yang berarti angka, karakter, dan nilai boolean tidak melanggar konsep ini
  • Perluas kemungkinan untuk bekerja dengan nilai-nilai ini dengan menyediakan metode dan bidang yang mudah digunakan
  • Diperlukan ketika suatu metode hanya bekerja dengan objek
Untuk memperkuat apa yang Anda pelajari, kami sarankan Anda menonton video pelajaran dari Kursus Java kami
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION