JavaRush /Java Blog /Random-ID /Panduan Kelas Integer Java

Panduan Kelas Integer Java

Dipublikasikan di grup Random-ID
Pada artikel ini kita akan membahas tentang kelas Integer. Mari kita pertimbangkan pertanyaan-pertanyaan ini:
  • apa itu kelas pembungkus;
  • pengepakan otomatis/pembongkaran primitif;
  • pengoperasian kelas Integer, metode dan konstanta.
Tutorial Kelas Integer Java - 1

Kelas pembungkus tipe primitif

Seperti yang Anda ketahui, Java memiliki tipe data yang berbeda-beda, yang dapat dibagi menjadi dua blok:
  • primitif;
  • referensi.
Ada beberapa tipe data primitif di Java:
  • bilangan bulat - byte, pendek, int, panjang;
  • angka floating point (nyata) - float, double;
  • tipe data logis - boolean;
  • tipe data karakter - char.
Setiap tipe data primitif memiliki kelas pembungkusnya sendiri. Tipe data referensi yang membungkus adik primitifnya dalam objek Java. Di bawah ini adalah tipe data primitif dan kelas pembungkusnya yang sesuai:
Tipe primitif Kelas pembungkus
byte byte
pendek Pendek
ke dalam Bilangan bulat
panjang Panjang
mengambang Mengambang
dobel Dobel
boolean Boolean
arang Karakter
Dalam praktiknya, kelas primitif dan kelas pembungkusnya memiliki banyak kesamaan. Sebagian besar operasi dilakukan secara identik. Namun, kelas wrapper memiliki sejumlah karakteristik yang bukan merupakan karakteristik primitif. Pertama, ada kelas: saat bekerja dengan kelas wrapper, kita bekerja dengan objek. Kedua (segala sesuatu yang mengikuti mengikuti dari poin satu), objek-objek ini bisa jadi nol. Ketiga, kelas wrapper menyediakan sejumlah konstanta dan metode yang memudahkan bekerja dengan tipe data tertentu. Pada artikel ini kita akan melihat lebih dekat cara bekerja dengan kelas Integer.

Bilangan Bulat

Kelas Integer adalah kelas pembungkus dari tipe primitif int. Kelas ini berisi satu bidang bertipe int. Sebagai kelas pembungkus, Integer menyediakan berbagai metode untuk bekerja dengan int, serta sejumlah metode untuk mengubah int menjadi String dan String menjadi int. Di bawah ini kita akan melihat berbagai contoh bekerja dengan kelas. Mari kita mulai dengan penciptaan. Yang paling umum digunakan (dan paling mudah digunakan) adalah opsi pembuatan berikut:
Integer a = 3;
Artinya, inisialisasi variabel Integer dalam hal ini mirip dengan inisialisasi variabel int. Selain itu, variabel Integer dapat diinisialisasi dengan nilai variabel int:
int i = 5;
Integer x = i;
System.out.println(x); // 5
Dalam kasus di atas, pengepakan otomatis terjadi secara implisit. Kami akan membicarakannya lebih lanjut di bawah. Selain opsi inisialisasi yang tercantum di atas, variabel Integer dapat dibuat seperti objek lainnya, menggunakan konstruktor dan kata kunci new:
Integer x = new Integer(25);
System.out.println(x);
Namun, dibutuhkan waktu lebih lama untuk menulis dan lebih lama untuk membaca, jadi opsi ini paling tidak umum. Anda dapat melakukan semuanya dengan variabel Integer seperti yang dapat Anda lakukan dengan variabel int. Mereka bisa menjadi:
Melipat

Integer a = 6;
Integer b = 2;
Integer c = a + b;
System.out.println(c); // 8
Mengurangi

Integer a = 6;
Integer b = 2;
Integer c = a - b;
System.out.println(c); // 4
Berkembang biak

Integer a = 6;
Integer b = 2;
Integer c = a * b;
System.out.println(c); // 12
Membagi

Integer a = 6;
Integer b = 2;
Integer c = a / b;
System.out.println(c); // 3
Kenaikan

Integer a = 6;
a++;
++a;
System.out.println(a); // 8
Pengurangan

Integer a = 6;
a--;
--a;
System.out.println(a); // 4
Namun, dengan semua ini, Anda perlu berhati-hati dan ingat bahwa Integer adalah tipe data referensi, dan variabel tipe ini bisa berupa null. Dalam hal ini (jika variabelnya nol), lebih baik menahan diri dari operasi aritmatika (dan operasi lain yang nolnya bukan pertanda baik). Berikut ini contohnya:
Integer a = null;
Integer b = a + 1; // Здесь мы упадем с "Exception in thread "main" java.lang.NullPointerException"
System.out.println(b);
Sebagian besar operasi perbandingan dilakukan dengan cara yang sama seperti pada tipe primitif int:
Integer a = 1;
Integer b = 2;

System.out.println(a > b);
System.out.println(a >= b);
System.out.println(a < b);
System.out.println(a <= b);
Keluaran:

false
false
true
true
Operasi membandingkan dua variabel Integer menonjol. Dan intinya di sini Integer adalah tipe data referensi, dan variabelnya menyimpan referensi ke nilai, dan bukan nilai itu sendiri (objek). Manifestasi dari fakta ini dapat diamati ketika mengeksekusi potongan kode berikut:
Integer a = 1;
Integer b = 1;
Integer c = new Integer(1);

System.out.println(a == b); // true
System.out.println(a == c); // false
Hasil persamaan pertama akan benar, dan persamaan kedua salah. Hal ini terjadi karena dalam kasus pertama kita membandingkan dua variabel (“a” dan “b”) yang menyimpan referensi ke objek yang sama. Dan dalam kasus kedua, kita membandingkan dua variabel yang merujuk ke dua objek berbeda (saat membuat variabel “c” kita membuat objek baru). Mari kita berikan contoh menarik lainnya:
Integer a = 1;
Integer b = 1;

Integer x = 2020;
Integer y = 2020;

System.out.println(a == b); // true
System.out.println(x == y); // false
Seperti yang bisa kita lihat, hasil perbandingan pertama benar, dan hasil perbandingan kedua salah. Ini semua tentang cache. Semua bilangan bulat dalam rentang -128 hingga 127 inklusif (nilai ini dapat disesuaikan) di-cache. Jadi ketika kita membuat variabel baru dan menetapkan nilai integer antara -128 dan 127, kita tidak membuat objek baru, melainkan menugaskan variabel tersebut sebagai referensi ke objek yang sudah dibuat di cache. Nah, mengetahui fakta tersebut, contoh di atas sepertinya tidak terlalu mistis. Variabel a dan b merujuk pada objek yang sama – objek dari cache. Dan selama inisialisasi variabel x dan y, kami membuat objek baru setiap kali, dan variabel ini menyimpan referensi ke objek berbeda. Dan seperti yang Anda ketahui, operator == membandingkan nilai variabel, dan nilai variabel referensi adalah referensinya. Untuk memeriksa kesetaraan antara dua variabel Integer secara akurat, Anda harus menggunakan (tidak peduli seberapa sepele kedengarannya) metode yang sama. Mari kita tulis ulang contoh di atas:
Integer a = 1;
Integer b = 1;

Integer x = 2020;
Integer y = 2020;

System.out.println(a.equals(b)); // true
System.out.println(x.equals(y)); // true

Mengemas otomatis dan membongkar Integer

Apa itu pengepakan dan pembongkaran otomatis? Saat membuat variabel Integer baru, kami menggunakan konstruksi berikut:
Integer a = 2020;
Dengan cara ini kita membuat objek baru tanpa menggunakan operator kunci baru. Hal ini dimungkinkan berkat mekanisme autopacking tipe primitif int. Prosedur sebaliknya terjadi ketika menugaskan variabel int primitif ke nilai variabel referensi Integer:
Integer a = 2020;
int x = a;
Dalam hal ini, kita tampaknya telah menetapkan referensi (yaitu, referensi ke suatu objek adalah nilai variabel “a”) ke variabel primitif. Namun nyatanya, berkat mekanisme auto-unpacking, nilai 2020 dituliskan ke variabel “x”. Auto-packing/unpacking adalah fenomena yang sangat umum di Java. Seringkali hal ini terjadi dengan sendirinya, terkadang bahkan tanpa sepengetahuan pemrogram. Namun Anda tetap perlu mewaspadai fenomena ini. Kami memiliki artikel menarik tentang topik ini di Javarush .

Konstanta kelas bilangan bulat

Kelas Integer menyediakan berbagai konstanta dan metode untuk bekerja dengan bilangan bulat. Pada bagian ini kita akan melihat lebih dekat beberapa di antaranya dalam praktiknya. Mari kita mulai dengan konstanta. Tabel di bawah ini menunjukkan semua konstanta kelas:
Kostanta Keterangan
UKURAN Jumlah bit pada sistem bilangan dua digit yang ditempati dengan tipe int
BYTE Jumlah byte dalam sistem bilangan dua digit yang ditempati oleh tipe int
MAX_VALUE Nilai maksimum yang dapat ditampung oleh tipe int
MIN_VALUE Nilai minimum yang dapat ditampung oleh tipe int
JENIS Mengembalikan objek bertipe Kelas dari tipe int
Mari kita lihat nilai semua konstanta ini dengan menjalankan kode berikut:
public static void main(String[] args) {
        System.out.println(Integer.SIZE);
        System.out.println(Integer.BYTES);
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.TYPE);
}
Hasilnya, kami mendapatkan keluaran berikut:

32
4
2147483647
-2147483648
int

Metode kelas Integer

Sekarang mari kita lihat sekilas metode kelas Integer yang paling sering digunakan. Jadi, yang "atas" dipimpin oleh metode untuk mengonversi angka dari string, atau mengonversi string dari angka. Mari kita mulai dengan mengubah string menjadi angka. Metode parseInt digunakan untuk tujuan ini , tanda tangannya di bawah:
  • 
    static int parseInt(String s)
Metode ini mengubah String menjadi int. Mari kita tunjukkan cara kerja metode ini:
int i = Integer.parseInt("10");
System.out.println(i); // 10
Jika konversi tidak memungkinkan—misalnya, kita meneruskan kata ke metode parseInt—NumberFormatException akan dilempar. Metode parseInt(String s) memiliki saudara yang kelebihan beban:
  • 
    static int parseInt(String s, int radix)
Metode ini mengubah parameter s menjadi int. Parameter radix menunjukkan sistem bilangan mana yang awalnya menulis bilangan dalam s, yang harus diubah menjadi int. Contoh di bawah ini:
System.out.println(Integer.parseInt("0011", 2)); // 3
System.out.println(Integer.parseInt("10", 8));   // 8
System.out.println(Integer.parseInt("F", 16));   // 15
Metode parseInt mengembalikan tipe data primitif int. Metode ini memiliki analog - metode valueOf . Beberapa variasi metode ini cukup memanggil parseInt secara internal. Bedanya dengan parseInt adalah hasil dari valueOf akan berupa Integer, bukan int. Mari kita lihat semua opsi untuk metode ini dan contoh cara kerjanya di bawah ini:
  • static Integer valueOf(int i) - mengembalikan Integer yang nilainya i;
  • static Integer valueOf(String s) - mirip dengan parseInt(String s), tetapi hasilnya adalah Integer;
  • static Integer valueOf(String s, int radix) - mirip dengan parseInt(String s, int radix), tetapi hasilnya adalah Integer.
Contoh:
int a = 5;
Integer x = Integer.valueOf(a);
Integer y = Integer.valueOf("20");
Integer z = Integer.valueOf("20", 8);

System.out.println(x); // 5
System.out.println(y); // 20
System.out.println(z); // 16
Kami melihat metode yang memungkinkan Anda mengonversi String ke int/Integer. Prosedur sebaliknya dicapai dengan menggunakan metode toString . Anda dapat memanggil metode toString pada objek Integer mana pun dan mendapatkan representasi stringnya:
Integer x = 5;
System.out.println(x.toString()); // 5
Namun, karena metode toString sering dipanggil secara implisit pada objek (misalnya, saat mengirim objek ke konsol untuk dicetak), metode ini jarang digunakan secara eksplisit oleh pengembang. Ada juga metode statis toString, yang mengambil parameter int dan mengubahnya menjadi representasi string. Misalnya:
System.out.println(Integer.toString(5)); // 5
Namun, seperti metode toString non-statis, penggunaan metode statis secara eksplisit jarang terjadi. Yang lebih menarik adalah metode statis toString, yang mengambil 2 parameter integer:
  • static String toString(int i, int radix) - akan mengonversi i menjadi representasi string dalam sistem bilangan radix.
Contoh:
System.out.println(Integer.toString(5, 2)); // 101
Kelas Integer memiliki beberapa metode untuk mencari maksimum/minimum dari dua bilangan:
  • static int max(int ​​​​a, int b) akan mengembalikan nilai terbesar di antara variabel yang diteruskan;
  • static int min(int a, int b) akan mengembalikan nilai terkecil di antara variabel yang diteruskan.
Contoh:
int x = 4;
int y = 40;

System.out.println(Integer.max(x,y)); // 40
System.out.println(Integer.min(x,y)); // 4

Kesimpulan

Pada artikel ini kita melihat kelas Integer. Kami berbicara tentang jenis kelas ini dan apa kelas pembungkusnya. Kami melihat kelas dari sudut pandang praktis. Kita melihat contoh operasi aritmatika, termasuk operasi perbandingan. Kami melihat seluk-beluk membandingkan dua variabel Integer, dan memeriksa konsep objek yang di-cache. Kami juga menyebutkan fenomena pengepakan/pembongkaran otomatis tipe data primitif. Selain itu, kami berhasil melihat beberapa metode kelas Integer, serta beberapa konstanta. Mereka memberikan contoh konversi bilangan dari satu sistem bilangan ke sistem bilangan lainnya.

Pekerjaan rumah

  1. Pelajari metode lain dari kelas Integer yang ada (Anda dapat mempelajarinya di situs web dengan dokumentasi resmi ), tulis di komentar metode mana yang telah Anda pelajari (tidak termasuk yang diberikan dalam artikel) yang paling berguna menurut Anda ( akan paling sering Anda gunakan). Dan berikan juga alasan pendapat anda.

    PS Tidak ada jawaban yang benar di sini, tetapi kegiatan ini akan memungkinkan Anda mempelajari kelas dengan lebih baik.

  2. Selesaikan masalah kecil sederhana untuk mengkonsolidasikan materi.

    Kami memiliki dua nomor:

    1100001001 - dalam sistem bilangan biner
    33332 - dalam sistem bilangan kuiner

    Hal ini diperlukan, hanya dengan menggunakan metode kelas Integer, untuk menentukan nilai maksimum di antara dua bilangan tertentu, dan kemudian menampilkan perbedaan antara nilai maksimum dan minimum dalam sistem bilangan terner.

  3. Konversikan nilai Integer maksimum yang mungkin ke sistem bilangan oktal dan tampilkan jumlah digit dalam bilangan yang dihasilkan (hitung bilangan tersebut secara terprogram).

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION