1. Integer Sinfi
Integer həm də ona görə yaxşıdır ki, bu bir sinifdir, yəni, onun sahələri və metodları ola bilər. Və əlbəttə, bunlar var. Hətta çoxdur — bir neçə onlarla. Buna görə də biz onların əsaslarını nəzərdən keçirəcəyik.
Integer sinfinin int tipinin maksimal və minimal dəyərini saxlayan iki sahəsi var:
| Sahə | Şərh |
|---|---|
|
int tipinin maksimal dəyəri |
|
int tipinin minimal dəyəri |
Bəzən dəyişənə int tipinin ən kiçik və ya ən böyük dəyərini təyin etmək istəyirsən. Kodu anlaşılmaz sabitlərlə qarışdırmamaq üçün bunu çox gözəl formada yaza bilərsən:
| Kod | Şərh |
|---|---|
|
|
Həmçinin Integer sinfində bir neçə maraqlı metod var, bunlar:
| Metodlar | Şərh |
|---|---|
|
Ədədin onaltılıq göstərilməsini qaytarır |
|
Ədədin ikilik göstərilməsini qaytarır |
|
Ədədin səkkizlik göstərilməsini qaytarır |
|
Verilən int-i Integer-ə çevrilir |
|
Sətirdən alınan ədədi qaytarır |
Əvvəlcə siz artıq Integer.parseInt() statik metodu ilə tanış idiniz. Gəlin, onun necə işlədiyini xatırlayaq:
int ad = Integer.parseInt(mətin);
Əgər parseInt() metoduna sadəcə ədədlərdən ibarət olan bir sətir keçirsən, bu metod həmin sətri parse edəcək və içindəki ədədi qaytaracaq.
Digər metodlar da faydalıdır. Məsələn, bunlardan bəziləri verilmiş ədədi təsviri ikilik, səkkizlik və ya onaltılıq formada olan sətrə çevirə bilər.
2. Double Sinfi
Double sinfi, əslində, Integer sinfinin analoqudur, yalnız bu sinif int tipi üçün deyil, double tipi üçün wrapper rolunu oynayır. Bu sinfin də maraqlı sahələri və metodları var, bəzi sahələrə nəzər salaq:
Double sinfinin altı maraqlı sahəsi var:
| Sahə | Təsvir |
|---|---|
|
Mənfi sonsuzluq |
|
Müsbət sonsuzluq |
|
Eksponentin minimal dəyəri (2x) |
|
Eksponentin maksimal dəyəri (2x) |
|
double tipinin minimal dəyəri |
|
double tipinin maksimal dəyəri |
Sonsuzluq
Əgər siz -1.0 ədədi 0.0 ədədinə bölsəniz, mənfi sonsuzluq əldə edəcəksiniz, əgər 1.0 ədədi 0.0 ədədinə bölsəniz — müsbət sonsuzluq əldə edəcəksiniz. double tipi nəinki sıfıra bölə bilir, həmçinin belə dəyərləri saxlaya bilir.
double ədədinin eksponenti
Eksponentlə də hər şey sadədir. Double ədədin içində manqtisa və eksponent var. Lakin eksponentin dəyəri 10x deyil, 2x olur. Eksponent 1 artırsa, nəticədə alınan ədəd iki dəfə çoxalır.
MIN_EXPONENT == -1024, nəticədə biz 2-1024 alırıq, bu isə təqribən 10-308-ə bərabərdir.
Həmçinin, Double sinfinin maraqlı metodları var:
| Metodlar | Təsvir |
|---|---|
|
Ədədi onaltılıq təqdimat şəklində qaytarır |
|
Verilən ədədin sonsuzluq olub olmadığını yoxlayır. |
|
Verilən ədədin NaN olub olmadığını yoxlayır |
|
Verilən double ədədini Double tipinə çevirir |
|
Sətirdən alınmış ədədi qaytarır |
Maraqlı məqam odur ki, isInfinite() metodu mövcuddur və əgər bu metodun argumentinə müsbət və ya mənfi sonsuzluq verilsə, o zaman true qaytarır.
isNaN() metodu da oxşayır — bu metod argument olaraq alınan ədədin NaN (dəqiq olmayan dəyər, Not a Number, Rəqəm deyil) olub olmadığını yoxlayır.
3. Character Sinfi
Character sinfi əsasən müxtəlif kateqoriyalara aidiyyatını yoxlamağa imkan verən bir çox istifadəçi statik metodları ilə maraqlıdır.
Nümunələr
| Metodlar | Təsvir |
|---|---|
|
Simvolun əlifba simvolu olub olmadığını yoxlayır |
|
Simvol hərfdir? |
|
Simvol rəqəmdir? |
|
Simvol boşluq, yeni sətr və ya paraqrafın dəyişməsi simvoludurmu? (kodlar: 12, 13, 14) |
|
Simvol ayırıcıdırmı: boşluq, tab və s.? |
|
Kiçik hərf — kiçik registerdədirmi? |
|
Böyük hərf — böyük registerdədirmi? |
|
Simvolu kiçik registerə çevirir |
|
Simvolu böyük registerə çevirir |
Bu metodların xüsusiyyəti ondan ibarətdir ki, onlar bütün tanınmış əlifbalarla işləyir: ərəb rəqəmləri də rəqəm kimi müəyyən ediləcək və s.
4. Boolean Classı
Boolean tipi demək olar ki, boolean tipi kimidir. Fərqlər minimaldır.
Aşağıda Boolean class-ının sadələşdirilmiş bir nümunəsini göstərəcəyik:
| Kod | Təsvir |
|---|---|
|
Konstantlar: TRUE və FALSE Dəyər dəyişəni Boolean class-ının konstruktoru Metod daxili dəyişən dəyərini qaytarır Bu statik metod true-nu TRUE-ya və false-u FALSE-a çevirmək bacarığına malikdir. |
Boolean tipində iki konstant (iki sahə) var:
| Class Konstantları | boolean Tipinə Analog | Təsvir |
|---|---|---|
|
|
doğru |
|
|
yanlış |
Bunlarla boolean tipi ilə olduğu kimi işləyə bilərsiniz:
| Kod | Qeyd |
|---|---|
|
Boolean — tək class-dır ki, onu şərt daxilində yaza bilərsiniz |
|
Bütün üç dəyişən true/TRUE-yə bərabərdir |
|
Konstantları equals və həmçinin == vasitəsilə müqayisə etmək mümkündür Bu da işləyəcək. |
Autoboxing burada mükəmməl işləyir, ona görə də bu tipi boolean tipi kimi istifadə edə bilərsiniz: heç bir gizli problem yoxdur.
| Necə yazılıb | Necə işləyir |
|---|---|
|
|
Və beləliklə, boolean və Boolean tipləri arasında müqayisələr necə aparılır:
boolean a = true;
Boolean b = true; // Boolean.TRUE bərabər olacaq
Boolean c = true; // Boolean.TRUE bərabər olacaq
a == b; // true (sadə tiplər kimi dəyərlərinə görə müqayisə edilir)
a == c; // true (sadə tiplər kimi dəyərlərinə görə müqayisə edilir)
b == c; // true (istifadə olunan obyektlər eyni olduğu üçün göstəricilər üzrə müqayisə edilir)
Əgər müstəqil bir Boolean obyekt yaratmaq istəyirsinizsə, onu açıq şəkildə yaradın:
boolean a = true;
Boolean b = new Boolean(true); // yeni Boolean obyekti
Boolean c = true; // Boolean.TRUE bərabər olacaq
a == b; // true (sadə tiplər kimi dəyərlərinə görə müqayisə edilir)
a == c; // true (sadə tiplər kimi dəyərlərinə görə müqayisə edilir)
b == c; // false (göstəricilər üzrə müqayisə edilir, fərqli obyektlər göstərilir)
Və daha bir nümunə: Boolean şərt daxilində istifadə:
| Kod | Qeyd |
|---|---|
|
Kompilyasiya olunacaq və işləyəcək |
Kompilyasiya olunacaq, amma işləməyəcək:
| Kod | Qeyd |
|---|---|
|
Səhv. Bu sətirdə istisna atılacaq |
5. Autoboxing zamanı dəyərlərin keşi
Bax, tam ədədi wrapper tiplərində bəzi gözlənilmələr var.
Artıq bildiyiniz kimi, əgər int və Integer-i müqayisə edirsinizsə, Integer int-ə çevrilir:
| Necə yazılmışdır | Necə işləyir |
|---|---|
|
|
İki Integer obyektinə bir-biri ilə müqayisə etsəniz, onlar int tipə çevrilməyəcək:
| Kod | Ekrana çıxış |
|---|---|
|
|
Hərçənd a == c və b == c, lakin a != b, çünki a və b müqayisə edilərkən referanslar müqayisə olunur. Bu isə gözləniləndir.
Gözləntidən kənar nəticə
Amma, əgər biz 500-ü 100-lə əvəz etsək, tamam fərqli nəticə alacağıq:
| Kod | Ekrana çıxış |
|---|---|
|
|
Səbəb ondadır ki, autoboxing zamanı hər zaman həqiqətən yeni Integer obyekti yaradılmır. -128-dən 127-yə qədər olan dəyərlər keş edilir.
Integer sinfində gizli bir massiv var, bu massiv obyektləri saxlayır: Integer(-128), Integer(-127), ... Integer(126), Integer(127)
Əgər siz Integer x = 128 yazsanız, autoboxing yeni obyekt yaradacaq, amma Integer x = 127 yazsanız, autoboxing keşdən (massivdən) hazır obyekt götürəcək.
Əgər Integer obyektinin keşdən götürülməsini istəmirsinizsə, o zaman onu açıq şəkildə yaratmalısınız: Integer x = new Integer(127);
Bu cür keşi bütün wrapper tipləri, məsələn: Integer, Long, Byte, Short, Boolean dəstəkləyir. Boolean tipində onun hər iki dəyəri TRUE və FALSE dəyişməzlərdir: mahiyyətcə də keş edilir.
GO TO FULL VERSION