1. Integerkelas
Integerjuga bagus karena merupakan kelas, yang artinya dapat memiliki bidang dan metode. Dan, tentu saja, memiliki mereka. Banyak dari mereka - lusinan. Di sini kita akan mempertimbangkan yang paling dasar.
Kelas Integermemiliki dua bidang yang berisi nilai maksimum dan minimum yang mungkin dari inttipe tersebut:
| Bidang | Keterangan |
|---|---|
|
Nilai maksimum yang mungkin dari inttipe tersebut |
|
Nilai minimum yang mungkin dari inttipe tersebut |
Terkadang Anda ingin menetapkan intnilai terkecil atau terbesar yang mungkin ke suatu variabel. Untuk menghindari mengacaukan kode Anda dengan konstanta yang tidak dapat dipahami, Anda dapat menulis ini dengan sangat jelas sebagai berikut:
| Kode | Keterangan |
|---|---|
|
|
Kelas Integerjuga memiliki beberapa metode yang menarik. Di sini mereka:
| Metode | Keterangan |
|---|---|
|
Mengembalikan string yang merupakan representasi angka heksadesimal |
|
Mengembalikan string yang merupakan representasi biner dari angka tersebut |
|
Mengembalikan string yang merupakan representasi oktal dari angka tersebut |
|
Membungkus yang diteruskan intdalam suatu Integerobjek |
|
Mengembalikan nomor yang diperoleh dari string yang diteruskan |
Anda sebelumnya menemukan metode statis Integer.parseInt(). Mari kita ingat cara kerjanya:
int name = Integer.parseInt(string);
Jika sebuah string yang berisi angka (hanya angka) diteruskan ke metode parseInt(), itu akan mengurai string dan mengembalikan nomor yang dikandungnya.
Metode lainnya juga berguna. Misalnya, beberapa dari mereka dapat mengonversi angka yang diteruskan ke string yang berisi representasi angka biner, oktal, atau heksadesimal.
2. Doublekelas
Secara umum, Doubleclass ini mirip dengan Integerclass, hanya membungkus a double, bukan int. Itu juga memiliki bidang dan metode yang akan menarik bagi kita. Pertimbangkan beberapa di antaranya:
Kelas Doublememiliki enam bidang menarik:
| Bidang | Keterangan |
|---|---|
|
Tak terhingga negatif |
|
Tak terhingga positif |
|
Eksponen minimum yang mungkin (2 x ) |
|
Eksponen maksimum yang mungkin (2 x ) |
|
Nilai minimum yang mungkin dari doubletipe tersebut |
|
Nilai maksimum yang mungkin dari doubletipe tersebut |
Ketakterbatasan
Jika Anda membagi -1.0dengan 0.0, Anda mendapatkan infinity negatif. Jika Anda membagi 1.0dengan 0.0, Anda mendapatkan infinity positif. Anda tidak hanya dapat membagi a doubledengan nol, tetapi Anda juga dapat menggunakannya untuk menyimpan hasil operasi ini.
Eksponen dari adouble
Memahami eksponen itu mudah. Secara internal, ganda terdiri dari mantissa dan eksponen. Tapi di sini nilai eksponennya bukan , tapi . Jadi, jika eksponen meningkat sebesar , nilai total bilangan tersebut akan berlipat ganda.10x2x1
MIN_EXPONENT == -1024, yang berarti , yang kira-kira sama dengan2-102410-308
Dan tentu saja, Doublekelas tersebut memiliki metode yang menarik:
| Metode | Keterangan |
|---|---|
|
Mengembalikan string yang merupakan representasi angka heksadesimal |
|
Memeriksa apakah nomor yang diteruskan adalah tak terhingga. |
|
Memeriksa apakah nomor yang lulusNaN |
|
Membungkus yang diteruskan doubledalam sebuah Doubleobjek |
|
Mengembalikan nomor yang diperoleh dari string yang diteruskan |
Menariknya, ada isInfinite()metode yang mengembalikan truejika bilangan yang dilewatkan adalah bilangan tak terhingga positif atau negatif.
Metodenya isNaN()serupa — ia memeriksa apakah angka yang diteruskan adalah NaN( Not-a-Number , konstanta khusus yang menunjukkan nilai yang tidak ditentukan).
3. Characterkelas
Kelas ini Charactermenarik terutama karena banyaknya metode utilitas statis yang memungkinkan Anda memeriksa apakah karakter termasuk dalam berbagai kategori.
Contoh
| Metode | Keterangan |
|---|---|
|
Memeriksa apakah suatu karakter adalah karakter abjad |
|
Memeriksa apakah karakter adalah huruf |
|
Memeriksa apakah karakter adalah angka |
|
Memeriksa apakah karakter berupa spasi, jeda baris, atau jeda halaman (kode: 12, 13, 14) |
|
Memeriksa apakah karakternya adalah spasi putih: spasi, tab, dll. |
|
Memeriksa apakah karakternya huruf kecil |
|
Memeriksa apakah karakter huruf besar |
|
Mengubah karakter menjadi huruf kecil |
|
Mengubah karakter menjadi huruf besar |
Fitur dari metode ini adalah mereka bekerja dengan semua huruf yang dikenal: angka Arab diklasifikasikan sebagai angka, dll.
4. Booleankelas
Jenisnya Booleanhampir sama dengan jenisnya boolean. Perbedaannya minimal.
Di bawah ini kami menunjukkan versi kelas yang disederhanakan Boolean:
| Kode | Keterangan |
|---|---|
|
Konstanta: TRUEи Konstruktor kelas FALSE variabel Metode mengembalikan nilai variabel internal Metode statis ini diubah menjadi dan menjadi . BooleantrueTRUEfalseFALSE |
Jenisnya Booleanmemiliki dua konstanta (dua bidang):
| Konstanta kelas | Mitra untuk tipe boolean | Keterangan |
|---|---|---|
|
|
BENAR |
|
|
PALSU |
Anda dapat bekerja dengan mereka dengan cara yang sama seperti Anda bekerja dengan tipe boolean:
| Kode | Catatan |
|---|---|
|
Kelas Booleanadalah satu-satunya kelas yang dapat ditulis di dalam suatu kondisi |
|
Ketiga variabel tersebut sama dengan true/TRUE |
|
Konstanta dapat dibandingkan menggunakan keduanya equalsdan == Ini juga akan berfungsi. |
Autoboxing berfungsi dengan baik di sini. Artinya, Anda dapat menggunakan jenis ini dengan cara yang sama seperti jenisnya boolean— tidak ada jebakan yang harus diwaspadai.
| Bagaimana itu ditulis | Bagaimana itu bekerja |
|---|---|
|
|
Dan di sini perbandingan dari booleandan Booleanjenis:
boolean a = true;
Boolean b = true; // b will be equal to Boolean.TRUE
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // true (compared by reference, but they point to the same object)
Jika Anda benar-benar membutuhkan Booleanobjek independen, maka Anda perlu membuatnya secara eksplisit:
boolean a = true;
Boolean b = new Boolean(true); // New Boolean object
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // false (compared by reference, and they point to different objects)
Satu lagi contoh, di mana kita akan menggunakan Booleanbagian dalam dari if:
| Kode | Catatan |
|---|---|
|
Ini akan mengkompilasi dan bekerja |
Ini akan dikompilasi, tetapi tidak akan berhasil!
| Kode | Catatan |
|---|---|
|
Kesalahan . Baris ini akan menampilkan pengecualian |
5. Menyimpan nilai selama autoboxing
Ada beberapa jebakan yang terkait dengan tipe pembungkus bilangan bulat.
Seperti yang sudah Anda ketahui, jika kita membandingkan an intdan an Integer, maka Integerdikonversi menjadi an int:
| Bagaimana itu ditulis | Bagaimana itu bekerja |
|---|---|
|
|
Jika Anda membandingkan dua Integerobjek satu sama lain, keduanya tidak dikonversi menjadi ints:
| Kode | Keluaran konsol |
|---|---|
|
|
a == cdan , tetapi , karena ketika kita membandingkan dan kita membandingkan referensi. Yang pada dasarnya adalah apa yang kita harapkan.b == ca != bab
Kejutan
Tetapi jika kita mengganti 500dengan 100, maka kita mendapatkan hasil yang sama sekali berbeda:
| Kode | Keluaran konsol |
|---|---|
|
|
Masalahnya di sini adalah bahwa objek baru tidak selalu benar-benar dibuat selama autoboxingInteger . Objek di-cache untuk nilai -128melalui 127inklusif.
Kelas Integermemiliki array tersembunyi yang menyimpan objek: Integer(-128), Integer(-127), ... Integer(126),Integer(127)
Jika Anda menulis Integer x = 128, maka proses autoboxing membuat objek baru, tetapi jika Anda menulis Integer x = 127, maka proses autoboxing mengambil objek yang ada dari cache (dari array).
Jika Anda tidak ingin Integerobjek berasal dari cache, Anda harus membuatnya secara eksplisit dengan menulis:Integer x = new Integer(127);
Semua jenis pembungkus memiliki cache seperti itu: Integer, Long, Byte, Short, Boolean. Untuk Booleanjenisnya, TRUEdan FALSEnilainya adalah konstanta, jadi keduanya juga di-cache.
GO TO FULL VERSION