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

Panduan Kelas Integer Java

Diterbitkan dalam kumpulan
Dalam artikel ini kita akan bercakap tentang kelas Integer. Mari kita pertimbangkan soalan-soalan ini:
  • apakah itu kelas pembalut;
  • pembungkusan automatik / pembongkaran primitif;
  • pengendalian kelas Integer, kaedah dan pemalarnya.
Tutorial Kelas Integer Java - 1

Kelas pembungkus jenis primitif

Seperti yang anda ketahui, Java mempunyai pelbagai jenis data, yang boleh dibahagikan kepada dua blok:
  • primitif;
  • rujukan.
Terdapat beberapa jenis data primitif di Jawa:
  • integer - bait, pendek, int, panjang;
  • nombor titik terapung (nyata) - terapung, berganda;
  • jenis data logik - boolean;
  • jenis data aksara - char.
Setiap jenis data primitif mempunyai kelas pembalutnya sendiri. Jenis data rujukan yang membungkus adik lelaki primitifnya dalam objek Java. Di bawah ialah jenis data primitif dan kelas pembalut yang sepadan:
Jenis primitif Pembalut kelas
bait Bait
pendek Pendek
int Integer
panjang Panjang
terapung Terapung
berganda berganda
boolean Boolean
char Perwatakan
Dalam erti kata yang praktikal, primitif dan kelas pembalutnya mempunyai banyak persamaan. Kebanyakan operasi dilakukan secara serupa. Walau bagaimanapun, kelas pembalut mempunyai beberapa ciri yang bukan ciri primitif. Pertama, terdapat kelas: apabila bekerja dengan kelas pembalut, kami bekerja dengan objek. Kedua (semua yang berikut mengikuti dari titik satu), objek ini boleh menjadi batal. Ketiga, kelas pembalut menyediakan beberapa pemalar dan kaedah yang memudahkan untuk bekerja dengan jenis data tertentu. Dalam artikel ini kita akan melihat lebih dekat tentang bekerja dengan kelas Integer.

Integer _

Kelas Integer ialah kelas pembalut jenis primitif int. Kelas ini mengandungi satu medan jenis int. Sebagai kelas pembalut, Integer menyediakan pelbagai kaedah untuk bekerja dengan int, serta beberapa kaedah untuk menukar int kepada String dan String kepada int. Di bawah ini kita akan melihat pelbagai contoh bekerja dengan kelas. Mari kita mulakan dengan penciptaan. Yang paling biasa digunakan (dan paling mudah digunakan) ialah pilihan penciptaan berikut:
Integer a = 3;
Iaitu, pemulaan pembolehubah Integer dalam kes ini adalah serupa dengan pemulaan pembolehubah int. Selain itu, pembolehubah Integer boleh dimulakan dengan nilai pembolehubah int:
int i = 5;
Integer x = i;
System.out.println(x); // 5
Dalam kes di atas, autopacking berlaku secara tersirat. Kami akan bercakap lebih lanjut mengenainya di bawah. Sebagai tambahan kepada pilihan permulaan yang disenaraikan di atas, pembolehubah Integer boleh dibuat seperti objek lain, menggunakan pembina dan kata kunci baharu:
Integer x = new Integer(25);
System.out.println(x);
Walau bagaimanapun, ia mengambil masa yang lebih lama untuk menulis dan lebih lama untuk membaca, jadi pilihan ini adalah yang paling tidak biasa. Anda boleh melakukan segala-galanya dengan pembolehubah Integer yang boleh anda lakukan dengan pembolehubah int. Mereka boleh jadi:
lipat

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

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

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

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
Penurunan

Integer a = 6;
a--;
--a;
System.out.println(a); // 4
Walau bagaimanapun, dengan semua ini, anda perlu berhati-hati dan ingat bahawa Integer ialah jenis data rujukan, dan pembolehubah jenis ini boleh menjadi batal. Dalam kes ini (jika pembolehubah adalah nol), adalah lebih baik untuk menahan diri daripada operasi aritmetik (dan mana-mana yang lain di mana null tidak memberi petanda yang baik). Berikut ialah contoh:
Integer a = null;
Integer b = a + 1; // Здесь мы упадем с "Exception in thread "main" java.lang.NullPointerException"
System.out.println(b);
Kebanyakan operasi perbandingan dijalankan dengan cara yang sama seperti dalam jenis 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);
Pengeluaran:

false
false
true
true
Operasi membandingkan dua pembolehubah Integer menonjol. Dan maksudnya di sini ialah Integer ialah jenis data rujukan, dan pembolehubahnya menyimpan rujukan kepada nilai, dan bukan nilai itu sendiri (objek). Manifestasi fakta ini boleh diperhatikan apabila melaksanakan serpihan kod 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 kesamaan pertama akan menjadi benar, dan yang kedua akan palsu. Ini berlaku kerana dalam kes pertama kita membandingkan dua pembolehubah (“a” dan “b”) yang menyimpan rujukan kepada objek yang sama. Dan dalam kes kedua, kami membandingkan dua pembolehubah yang merujuk kepada dua objek berbeza (apabila kami mencipta pembolehubah "c" kami mencipta objek baharu). Mari kita berikan satu lagi contoh yang menarik:
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 kita dapat lihat, hasil perbandingan pertama adalah benar, dan keputusan kedua adalah palsu. Ini semua tentang caching. Semua integer dalam julat dari -128 hingga 127 termasuk (nilai ini boleh disesuaikan) dicache. Oleh itu, apabila kita mencipta pembolehubah baharu dan memberikannya nilai integer antara -128 dan 127, kita tidak mencipta objek baharu, sebaliknya memberikan pembolehubah itu rujukan kepada objek yang telah dibuat dalam cache. Sekarang, mengetahui fakta ini, contoh di atas tidak kelihatan begitu mistik. Pembolehubah a dan b merujuk kepada objek yang sama - objek daripada cache. Dan semasa permulaan pembolehubah x dan y, kami mencipta objek baharu setiap kali, dan pembolehubah ini menyimpan rujukan kepada objek yang berbeza. Dan seperti yang anda ketahui, operator == membandingkan nilai pembolehubah, dan nilai pembolehubah rujukan adalah rujukan. Untuk menyemak kesamaan dengan tepat antara dua pembolehubah Integer, anda mesti menggunakan (tidak kira betapa remehnya bunyi itu) kaedah sama. Mari kita tulis semula 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

Autopacking dan unpacking Integer

Apakah pembungkusan dan pembongkaran automatik? Apabila mencipta pembolehubah Integer baharu, kami menggunakan pembinaan berikut:
Integer a = 2020;
Dengan cara ini kami mencipta objek baharu tanpa menggunakan pengendali kunci baharu. Ini boleh dilakukan terima kasih kepada mekanisme autopacking int jenis primitif. Prosedur terbalik berlaku apabila menetapkan pembolehubah int primitif kepada nilai pembolehubah rujukan Integer:
Integer a = 2020;
int x = a;
Dalam kes ini, kita nampaknya telah memberikan rujukan (iaitu, rujukan kepada objek ialah nilai pembolehubah "a") kepada pembolehubah primitif. Tetapi sebenarnya, terima kasih kepada mekanisme pembongkaran automatik, nilai 2020 telah ditulis kepada pembolehubah "x". Pembungkusan/pembongkaran automatik ialah fenomena yang sangat biasa di Jawa. Selalunya ia berlaku dengan sendirinya, kadangkala tanpa pengetahuan pengaturcara. Tetapi anda masih perlu tahu tentang fenomena ini. Kami mempunyai artikel menarik mengenai topik ini di Javarush .

Pemalar kelas integer

Kelas Integer menyediakan pelbagai pemalar dan kaedah untuk bekerja dengan integer. Dalam bahagian ini kita akan melihat dengan lebih dekat beberapa daripada mereka dalam amalan. Mari kita mulakan dengan pemalar. Jadual di bawah menunjukkan semua pemalar kelas:
Costanta Penerangan
SAIZ Bilangan bit dalam sistem nombor dua digit yang diduduki oleh jenis int
BYTES Bilangan bait dalam sistem nombor dua digit yang diduduki oleh jenis int
MAX_VALUE Nilai maksimum yang boleh disimpan oleh jenis int
MIN_VALUE Nilai minimum yang boleh disimpan oleh jenis int
JENIS Mengembalikan objek jenis Kelas daripada jenis int
Mari kita lihat nilai semua pemalar ini dengan menjalankan kod 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);
}
Akibatnya, kami mendapat output berikut:

32
4
2147483647
-2147483648
int

Kaedah kelas Integer

Sekarang mari kita lihat dengan pantas kaedah yang paling banyak digunakan bagi kelas Integer. Jadi, yang "atas" diketuai oleh kaedah untuk menukar nombor daripada rentetan, atau menukar rentetan daripada nombor. Mari kita mulakan dengan menukar rentetan kepada nombor. Kaedah parseInt digunakan untuk tujuan ini , tandatangan adalah di bawah:
  • 
    static int parseInt(String s)
Kaedah ini menukarkan String kepada int. Mari kita tunjukkan cara kaedah ini berfungsi:
int i = Integer.parseInt("10");
System.out.println(i); // 10
Jika penukaran tidak dapat dilakukan—sebagai contoh, kami menghantar perkataan kepada kaedah parseInt— NumberFormatException akan dilemparkan. Kaedah parseInt(String s) mempunyai adik beradik yang terlebih beban:
  • 
    static int parseInt(String s, int radix)
Kaedah ini menukar parameter s kepada int. Parameter radix menunjukkan dalam sistem nombor mana nombor dalam s pada asalnya ditulis, yang mesti ditukar kepada int. Contoh di bawah:
System.out.println(Integer.parseInt("0011", 2)); // 3
System.out.println(Integer.parseInt("10", 8));   // 8
System.out.println(Integer.parseInt("F", 16));   // 15
Kaedah parseInt mengembalikan int jenis data primitif. Kaedah ini mempunyai analog - kaedah valueOf . Sesetengah variasi kaedah ini hanya memanggil parseInt secara dalaman. Perbezaan dari parseInt ialah hasil valueOf akan menjadi Integer, bukan int. Mari lihat semua pilihan untuk kaedah ini dan contoh cara ia berfungsi di bawah:
  • nilai Integer statikOf(int i) - mengembalikan Integer yang nilainya ialah i;
  • statik Integer valueOf(String s) - serupa dengan parseInt(String s), tetapi hasilnya ialah Integer;
  • nilai Integer statikOf(String s, int radix) - serupa dengan parseInt(String s, int radix), tetapi hasilnya akan menjadi 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 kaedah yang membolehkan anda menukar String kepada int/Integer. Prosedur terbalik dicapai menggunakan kaedah toString . Anda boleh memanggil kaedah toString pada mana-mana objek Integer dan mendapatkan perwakilan rentetannya:
Integer x = 5;
System.out.println(x.toString()); // 5
Walau bagaimanapun, disebabkan fakta bahawa kaedah toString sering dipanggil secara tersirat pada objek (contohnya, apabila menghantar objek ke konsol untuk dicetak), kaedah ini jarang digunakan secara eksplisit oleh pembangun. Terdapat juga kaedah statik keString, yang mengambil parameter int dan menukarnya kepada perwakilan rentetan. Sebagai contoh:
System.out.println(Integer.toString(5)); // 5
Walau bagaimanapun, seperti kaedah toString bukan statik, menggunakan kaedah statik secara eksplisit jarang berlaku. Lebih menarik ialah kaedah statik toString, yang mengambil 2 parameter integer:
  • String statik keString(int i, int radix) - akan menukar i kepada perwakilan rentetan dalam sistem nombor radix.
Contoh:
System.out.println(Integer.toString(5, 2)); // 101
Kelas Integer mempunyai beberapa kaedah untuk mencari maksimum/minimum dua nombor:
  • statik int max(int ​​​​a, int b) akan mengembalikan nilai terbesar antara pembolehubah yang diluluskan;
  • int statik min(int a, int b) akan mengembalikan nilai terkecil antara pembolehubah yang diluluskan.
Contoh:
int x = 4;
int y = 40;

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

Kesimpulan

Dalam artikel ini kita melihat kelas Integer. Kami bercakap tentang jenis kelas ini dan apakah kelas pembalut. Kami melihat kelas dari sudut praktikal. Kami melihat contoh operasi aritmetik, termasuk operasi perbandingan. Kami melihat selok-belok membandingkan dua pembolehubah Integer, dan mengkaji konsep objek cache. Kami juga menyebut fenomena auto-packing/unpacking jenis data primitif. Di samping itu, kami berjaya melihat beberapa kaedah kelas Integer, serta beberapa pemalar. Mereka memberi contoh penukaran nombor daripada satu sistem nombor kepada sistem nombor yang lain.

Kerja rumah

  1. Kaji kaedah lain kelas Integer yang ada (anda boleh mengkajinya di laman web dengan dokumentasi rasmi ), tulis dalam ulasan kaedah yang mana yang telah anda pelajari (tidak termasuk yang diberikan dalam artikel) yang paling berguna pada pendapat anda ( akan digunakan oleh anda paling kerap). Dan juga berikan alasan untuk pendapat anda.

    PS Tiada jawapan yang betul di sini, tetapi aktiviti ini akan membolehkan anda mempelajari kelas dengan lebih baik.

  2. Selesaikan masalah mudah kecil untuk menyatukan bahan.

    Kami mempunyai dua nombor:

    1100001001 - dalam sistem nombor binari
    33332 - dalam sistem nombor kui

    Ia adalah perlu, hanya menggunakan kaedah kelas Integer, untuk menentukan maksimum antara dua nombor yang diberikan, dan kemudian memaparkan perbezaan antara nilai maksimum dan minimum dalam sistem nombor terner.

  3. Tukar nilai Integer maksimum yang mungkin kepada sistem nombor perlapanan dan paparkan bilangan digit dalam nombor yang terhasil (kira nombor secara pemrograman).

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