1. Integer klasi
Integerning yaxshi tomoni, bu klass bo'lgani uchun, u fieldlar va methodlarga ega bo'lishi mumkin. Albatta, ularning soni ko'p — bir necha o'nlab. Shuning uchun biz ulardan eng asosiylarini ko'rib chiqamiz.
Integer klassida int tipining maksimal va minimal qiymatlarini saqlovchi ikkita field bor:
| Field | Ta'rif |
|---|---|
|
int tipining maksimal qiymati |
|
int tipining minimal qiymati |
Ba'zan int tipining eng kichik yoki eng katta qiymatini o'zgaruvchiga berishni xohlaysiz. Kodingizni tushunarsiz konstantalar bilan to'ldirib tashlamaslik uchun bu juda chiroyli tarzda yozilishi mumkin:
| Kod | Ta'rif |
|---|---|
|
|
Integer klassida bir nechta qiziqarli metodlar ham bor, mana ular:
| Metodlar | Ta'rif |
|---|---|
|
Raqamning o'n oltilik ko'rinishini qaytaradi |
|
Raqamning ikkilik ko'rinishini qaytaradi |
|
Raqamning sakkizlik ko'rinishini qaytaradi |
|
Berilgan intni Integerga o'rab beradi |
|
Stringdan olingan raqamni qaytaradi |
Oldin siz Integer.parseInt() statik metodi bilan tanishgan edingiz. Eslatib o'tamiz, u qanday ishlaydi:
int name = Integer.parseInt(string);
Agar parseInt() methodiga ichida raqam (faqat raqamlar) bo'lgan stringni bersangiz, u bu stringni pars qiladi va unda mavjud bo'lgan raqamni qaytaradi.
Boshqa metodlar ham foydali. Masalan, ba'zilari berilgan raqamni binar, oktal yoki heksadecimal ko'rinishga o'zgartirishi mumkin.
2. Double klasi
Double klassi, umuman olganda, Integer klassiga o'xshash, lekin bu int emas, balki double tipiga o'rama. Unda ham qiziqarli fieldlar va metodlar bor, ularning ba'zilarini ko'rib chiqamiz:
Double klassida olti ta qiziqarli field mavjud:
| Field | Ta'rif |
|---|---|
|
Manfiy cheksizlik |
|
Ijobiy cheksizlik |
|
Eksponentning minimal qiymati (2x) |
|
Eksponentning maksimal qiymati (2x) |
|
double tipining minimal qiymati |
|
double tipining maksimal qiymati |
Cheksizlik
Agar siz -1.0'ni 0.0'ga bo'lsangiz, manfiy cheksizlikni olasiz, agar 1.0'ni 0.0'ga bo'lsangiz, ijobiy cheksizlikni olasiz. double tipi nafaqat nolga bo'lishi mumkin, balki bunday qiymatlarni ham saqlaydi.
double sonining eksponenti
Eksponent bilan hamma narsa oddiy. double soni ichida mantissa va eksponentdan iborat. Faqat eksponentning qiymati 10x emas, balki 2x. Agar eksponent 1 ga oshsa, sonning oxirgi qiymati ikki barobar ko'payadi.
MIN_EXPONENT == -1024, natijada 2-1024 taxminan 10-308 ga teng bo'ladi.
Double klassida qiziqarli metodlar ham mavjud:
| Metodlar | Ta'rif |
|---|---|
|
Sonning o'n oltilik vakiling qaytaradi |
|
Berilgan son cheksizlikmi yoki yo'qligini tekshiradi. |
|
Berilgan son NaNmi yoki yo'qligini tekshiradi |
|
Berilgan double'ni Double ga o'rab beradi |
|
Stringdan olingan sonni qaytaradi |
Qizig'i shundaki, isInfinite() metodi mavjud bo'lib, agar unga berilgan son plus yoki minus cheksizlik bo'lsa trueni qaytaradi.
Xuddi shunday isNaN() metodi ham ishlaydi — unga berilgan son NaNmi yoki yo'qligini tekshiradi: bu o'ziga xos bir konstantadir, noaniqlikni ifodalaydi (Not a Number, Sonalmas).
3. Character klasi
Character klasi, birinchi navbatda, ko'p sonli foydali statik metodlar bilan qiziqarli, ular turli kategoriyalarga tegishli bo'lgan belgilarni tekshiradi.
Misollar
| Metodlar | Ta'rif |
|---|---|
|
Belgi alifbo belgisi ekanligini tekshiradi |
|
Belgi harf ekanligini tekshiradi |
|
Belgi raqam ekanligini tekshiradi |
|
Belgi bo'shliq, qator o'tish belgi yoki paragraf almashtirish belgi ekanligini tekshiradi (kodlar: 12, 13, 14) |
|
Belgi ajratmalar: bo'shliq, tab va boshqalar ekanligini tekshiradi |
|
Belgi kichik harflardanmi — kichik harflar? |
|
Belgi katta harflardanmi — katta harflar? |
|
Belgi kichik harflarga aylantiriladi |
|
Belgi katta harflarga aylantiriladi |
Bu metodlarning o'ziga xosligi shundaki, ular barcha ma'lum alifbolar bilan ishlaydi: arab raqamlari belgilar raqamlar sifatida aniqlanadi va hokazo.
4. Boolean klasi
Boolean tipi deyarli boolean tipi kabi. Farqlar minimaldir.
Quyida Boolean klassining soddalashtirilgan variantini ko'rsatamiz:
| Kod | Ta'rif |
|---|---|
|
Konstantalar: TRUE va FALSE O'zgaruvchi qiymati Boolean klassining konstruktori Metod ichki o'zgaruvchi qiymatini qaytaradi Bu statik metod true ni TRUEga va false ni FALSEga o'zgartirishni biladi. |
Boolean tipida ikkita konstanta (ikkita field) mavjud:
| Klassa konstantalari | boolean tipi analogi | Ta'rif |
|---|---|---|
|
|
rost |
|
|
yolg'on |
Ular bilan boolean tipi kabi ishlash mumkin:
| Kod | Izoh |
|---|---|
|
Boolean – bu shart ichida yozilishi mumkin bo'lgan yagona klass |
|
Uchta o'zgaruvchi ham true/TRUE ga teng |
|
Konstantalar equals bilan va == bilan solishtirilishi mumkin Bu ham ishlaydi. |
Autoboxing bu yerda yaxshi ishlaydi, shuning uchun siz bu tipdan boolean kabi foydalanishingiz mumkin: bu yerda hech qanday yashirin kamchiliklar yo'q.
| Qanday yozilgan | Qanday ishlaydi |
|---|---|
|
|
Va boolean va Boolean tiplari orasidagi solishtirishlar qanday amalga oshiriladi:
boolean a = true;
Boolean b = true; // Boolean.TRUE ga teng bo'ladi
Boolean c = true; // Boolean.TRUE ga teng bo'ladi
a == b; // true (qiymatlar bo'yicha primitivlar sifatida solishtiriladi)
a == c; // true (qiymatlar bo'yicha primitivlar sifatida solishtiriladi)
b == c; // true (havolalar bo'yicha solishtiriladi, lekin ayni obyektga ishora qiladi)
Agar haqiqatan Boolean obyektini mustaqil yaratmoqchi bo'lsangiz, uni aniq yaratishingiz kerak:
boolean a = true;
Boolean b = new Boolean(true); // yangi Boolean obyekt
Boolean c = true; // Boolean.TRUE ga teng bo'ladi
a == b; // true (qiymatlar bo'yicha primitivlar sifatida solishtiriladi)
a == c; // true (qiymatlar bo'yicha primitivlar sifatida solishtiriladi)
b == c; // false (havolalar bo'yicha solishtiriladi, turli obyektlarga ishora qiladi)
Va yana bir misol: Boolean dan if ichida foydalanish:
| Kod | Izoh |
|---|---|
|
Kompilyatsiya qiladi va ishlaydi |
Kompilyatsiya qiladi, lekin ishlamaydi:
| Kod | Izoh |
|---|---|
|
Xatolik. Bu qatorda istisno tashlanadi |
5. Autoboxingda qiymatlarni kesh qilish
Aniq sonli tip-oralama bilan hayron qoldiruvchi narsalar bor.
Siz allaqachon bilasizki, agar int va Integerni solishtirsangiz, Integer intga aylantiriladi:
| Qanday yozilgan | Qanday ishlaydi |
|---|---|
|
|
Agar ikkita Integer obyektini bir-biri bilan solishtirsangiz, ular int tipiga aylantirilmaydi:
| Kod | Ekranda chiqish |
|---|---|
|
|
Garchi a == c va b == c bo'lsa ham, lekin a != b, chunki a va b solishtirilganda havolalar bo'yicha solishtiriladi. Bu, aslida, kutilgan natija.
Syurpriz
Lekin agar biz 500 ni 100 bilan almashtirsak, butunlay boshqacha natijani olamiz:
| Kod | Ekranda chiqish |
|---|---|
|
|
Buning sababi shundaki, autoboxingda har doim ham yangi Integer obyekt yaratilib bo'lmaydi. -128 dan 127 gacha bo'lgan qiymatlar kesh qilinadi.
Integer klassida yashirin massiv bor, u Integer(-128), Integer(-127), ... Integer(126), Integer(127) obyektlarini saqlaydi
Agar siz Integer x = 128 yozsangiz, autoboxing yangi obyekt yaratadi, agar Integer x = 127 yozsangiz, autoboxing tayyor obyektni keshdan (massivdan) oladi.
Agar Integer obyektini keshdan olmaslikni istasangiz, uni aniq yaratishingiz kerak, ya'ni: Integer x = new Integer(127);
Bunday kesh barcha tip-oralamalarda mavjud: Integer, Long, Byte, Short, Boolean. Boolean tipida esa uning ikkala qiymati TRUE va FALSE konstantalar: asosan ham keshlanadi.
GO TO FULL VERSION