1. Integer
kelas
Integer
juga 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 Integer
memiliki dua bidang yang berisi nilai maksimum dan minimum yang mungkin dari int
tipe tersebut:
Bidang | Keterangan |
---|---|
|
Nilai maksimum yang mungkin dari int tipe tersebut |
|
Nilai minimum yang mungkin dari int tipe tersebut |
Terkadang Anda ingin menetapkan int
nilai 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 Integer
juga 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 int dalam suatu Integer objek |
|
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. Double
kelas
Secara umum, Double
class ini mirip dengan Integer
class, hanya membungkus a double
, bukan int
. Itu juga memiliki bidang dan metode yang akan menarik bagi kita. Pertimbangkan beberapa di antaranya:
Kelas Double
memiliki 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 double tipe tersebut |
|
Nilai maksimum yang mungkin dari double tipe tersebut |
Ketakterbatasan
Jika Anda membagi -1.0
dengan 0.0
, Anda mendapatkan infinity negatif. Jika Anda membagi 1.0
dengan 0.0
, Anda mendapatkan infinity positif. Anda tidak hanya dapat membagi a double
dengan 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.10x
2x
1
MIN_EXPONENT == -1024
, yang berarti , yang kira-kira sama dengan2-1024
10-308
Dan tentu saja, Double
kelas 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 double dalam sebuah Double objek |
|
Mengembalikan nomor yang diperoleh dari string yang diteruskan |
Menariknya, ada isInfinite()
metode yang mengembalikan true
jika 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. Character
kelas
Kelas ini Character
menarik 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. Boolean
kelas
Jenisnya Boolean
hampir 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 . Boolean true TRUE false FALSE |
Jenisnya Boolean
memiliki 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 Boolean adalah satu-satunya kelas yang dapat ditulis di dalam suatu kondisi |
|
Ketiga variabel tersebut sama dengan true /TRUE |
|
Konstanta dapat dibandingkan menggunakan keduanya equals dan == 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 boolean
dan Boolean
jenis:
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 Boolean
objek 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 Boolean
bagian 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 int
dan an Integer
, maka Integer
dikonversi menjadi an int
:
Bagaimana itu ditulis | Bagaimana itu bekerja |
---|---|
|
|
Jika Anda membandingkan dua Integer
objek satu sama lain, keduanya tidak dikonversi menjadi int
s:
Kode | Keluaran konsol |
---|---|
|
|
a == c
dan , tetapi , karena ketika kita membandingkan dan kita membandingkan referensi. Yang pada dasarnya adalah apa yang kita harapkan.b == c
a != b
a
b
Kejutan
Tetapi jika kita mengganti 500
dengan 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 -128
melalui 127
inklusif.
Kelas Integer
memiliki 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 Integer
objek 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 Boolean
jenisnya, TRUE
dan FALSE
nilainya adalah konstanta, jadi keduanya juga di-cache.
GO TO FULL VERSION