1. Primtiv tiplərin siyahısı
Java-da 8 əsas primtiv tip var. Bunlara primtiv deyirlər, çünki bu tiplərin dəyərləri obyekt deyillər və birbaşa dəyişənlərdə saxlanılır.
Bu tiplər barədə qısa informasiya verən cədvəl aşağıdadır:
| Tip | Ölçü, bayt |
Dəyərlər aralığı | Susmaya görə dəyər | Təsviri |
|---|---|---|---|---|
byte |
1 | -128 .. 127 | 0 |
Ən kiçik tam ədəd — bir bayt |
short |
2 | -32,768 .. 32,767 | 0 |
Qısa tam ədəd, iki bayt |
int |
4 | -2*109 .. 2*109 | 0 |
Tam ədəd, 4 bayt |
long |
8 | -9*1018 .. 9*1018 | 0L |
Uzun tam ədəd, 8 bayt |
float |
4 | -1038 .. 1038 | 0.0f |
Ondalık, 4 bayt |
double |
8 | -10308 .. 10308 | 0.0d |
Ondalık, ikiqat uzun, 8 bayt |
boolean |
1 | true, false |
false |
Məntiqi tip (yalnız true & false) |
char |
2 | 0 .. 65,535 | '\u0000' |
Simvollar, 2 bayt, hər şey 0-dan böyük |
Bu arada, vacib detal. Əgər sinif dəyişəni (sinif sahəsi) və ya statik sinif dəyişəni elan etdinizsə və ona heç bir dəyər təyin etmədinizsə, o, susmaya görə dəyər ilə inizializasiya olunur. Belə dəyərlərin siyahısı cədvəldə verilib.
Metodların lokal dəyişənləri susmaya görə dəyərə sahib deyil, və əgər belə bir dəyişənə heç bir dəyər təyin etməsəniz, o, inicializasiya edilməmiş hesab olunur və dəyərindən istifadə etmək olmaz.
Amma gəlin yenidən primtiv tiplərə qayıdaq və bunları daha ətraflı nəzərdən keçirək
2. Tam tiplər
Java dilində düz 4 tam tip var: byte, short, int və long. Onlar ölçüləri və saxlaya biləcəkləri dəyərlərin diapazonu ilə fərqlənirlər.
int tipi
Ən çox istifadə olunan tip int tipidir. Onun adı Integer (tam) sözündən gəlir. Koddakı bütün tam ədədi ədədli dəyərlər int tipində olurlar (əgər ədədin sonunda L, F və ya D hərfləri göstərilməyibsə).
Bu tipdə dəyişənlərin dəyəri -2,147,483,648-dən +2,147,483,647-ə qədər qəbul edə bilər.
Bu kifayət qədər böyükdür və demək olar ki, bütün hallarda kifayət edir. Demək olar ki, bütün funksiyalar hansı ki, ədəd qaytarır, int tipində ədəd qaytarırlar.
Nümunələr:
| Kod | İzah |
|---|---|
|
length() metodu sətirin uzunluğunu qaytarır |
|
length sahəsi massiv uzunluğunu özündə saxlayır. |
short tipi
short tipi öz adını short int sözündən alıb. Ona hələ də qısa tam deyilir. int tipindən fərqli olaraq, onun uzunluğu cəmi iki baytdır və mümkün dəyərlərin diapazonu -32,768-dən +32,767-ə qədərdir.
Yəni hətta bu tipdə milyon saxlamaq mümkün deyil. Hətta 50 min də. Bu, Java-dakı ən az istifadə olunan tam ədədi tipdir. Əsasən bu tip, yaddaşdan qənaət etmək istəyəndə istifadə olunur.
Məsələn, sizdə elə bir vəziyyət ola bilər ki, işlədiyiniz dəyərlərin 30 min keçməyəcəyi əvvəlcədən məlumdur və belə dəyərlər milyonlarla vardır.
Məsələn, siz ultra-yüksək dəqiqlikli şəkilləri işləyən bir proqram yazırsınız: bir rəngə 10 bit düşür. Amma şəkildə bir milyona yaxın piksel var. Burada artıq fərq edir, siz int tipindən istifadə edirsiniz, yoxsa short tipindən.
long tipi
Bu tip öz adını long int-dən götürüb — ona hələ də uzun tam deyilir. int tipindən fərqli olaraq, onun sadəcə nəhəng dəyərlər diapazonu vardır: -9*1018-dən +9*1018-ə qədərdir.
Bəs niyə bu əsas tam tip deyil?
Hamısı Java-nın 90-cı illərin ortalarında yarandığı ilə əlaqədardır, həmin dövrdə əksər kompüterlər 32-bitlik idi. Bu da proseslərin əsasən 32-bitlik ədədlərlə işləmək üçün uyğunlaşdığı mənasına gəlirdi. 64-bitlik tam ədədlərlə işləmək prosessorlar üçün mümkün idi, amma belə ədədlərlə əməliyyatlar daha ləng olurdu.
Buna görə də proqramçılar ağıllı qərar verdilər və standart tam ədədi tip kimi int tipini seçdilər, amma long tipini yalnız onsuz keçinmək çətin olduğu hallarda istifadə etdilər.
byte tipi
Bu, Java-da ən kiçik tam ədədi tipdir, lakin heç də ən az istifadə olunan deyil. Onun adı byte sözü ilə üst-üstə düşür — Java-da minimal müraciət edilə bilən yaddaş hüceyrəsi.
byte tipinin mümkün dəyərləri çox böyük deyil: -128-dən +127-ə qədərdir. Amma bu, onun üstünlüyü deyil. byte tipi əsasən yaddaşda böyük anonim məlumat bloklarını saxlamaq lazım olduqda istifadə olunur. byte tipli massiv bu məqsədlər üçün sadəcə mükəmməldir.
Məsələn, siz hansısa bir faylı harasa köçürməlisiniz.
Faylın məzmununu emal etməyə ehtiyacınız yoxdur: sadəcə yaddaş bölgəsi (buffer) yaratmaq istəyirsiniz, faylın məzmununu oraya köçürmək və sonra bu məlumatları başqa fayla yazmaq. Bu məqsəd üçün byte tipli massiv tam yararlıdır.
Üstəlik, massiv tipində dəyişəndə yalnız yaddaş sahəsinə keçid saxlanır. Bu dəyəri hər hansı bir metoda verdikdə yalnız yaddaşda olan ünvan ötürüləcək, yaddaş sahəsinin özü isə kopyalanmayacaq.
byte[] buffer = new byte[1024*1024];
FileInputStream sourceFile = new FileInputStream("c:\\data.txt");
FileOutputStream destFile = new FileOutputStream("c:\\output.txt");
while (true)
{
int size = sourceFile.read(buffer); // fayldan məlumatları buferə oxuyuruq
destFile.write(buffer, 0, size); // buferdən fayla məlumatları yazırıq
// əgər bufer tam dolmayıbsa, köçürmə dayandırılır
if (size < buffer.length) break;
}
sourceFile.close();
destFile.close();
3. Onluq vergüllü tiplər
Sadə tiplərin arasında həmçinin iki onluq vergüllü tip var. Amma bu tam dəqiq ad deyil. Rəsmi olaraq onlar üzən nöqtəli ədədlər — floating point numbers adlanır. Adı standartdan gəlir: burada tam və kəsr hissələri nöqtə (vergül deyil) ayırır.
Hər ölkədə ədədlərin yazılması üçün öz standartları var (təəccüb!).
Çoxumuz minlikləri nöqtə ilə, kəsr hissələrini isə vergül ilə bölməyə vərdiş etmişik: məsələn, bir milyon tam və 153 mində belə yazarıq: 1.000.000,153. Amma ABŞ-da, harada ki Java yaradılıb, fərqli standart istifadə olunur: 1,000,000.153
Java-da iki üzən nöqtəli sadə tip var: double və float.
Əvvəllər dediyimiz kimi, bu tiplər içində xüsusi bir şəkildə təşkil olunmuşdur: əslində bu tiplərə aid olan hər bir dəyişəndə bir rəqəm yox, iki rəqəm saxlanılır:
Məsələn, 987654.321 kəsr ədədini belə təsvir etmək olar: 0.987654321*106. Buna görə yaddaşda bu, iki ədəd kimi saxlanılır: 987654321 (mantissa — ədədin əsas hissəsi) və 6 (eksponent — onluq qüvvət).
float tipi
float tipinin adı floating point number ifadəsindən gəlir. Bu tipin ölçüsü kiçikdir — cəmi 4 bayt (32 bit), baxmayaraq ki, dəyəri -3.4*1038-dən 3.4*1038-ə qədər saxlayır. Mantissaya 24 bit, eksponentaya isə 8 bit ayrılır. Bu tip cəmi 8 mənalı rəqəm saxlaya bilir.
Bu yanaşma ədədin ölçüsünü artırmağa imkan verir, məsələn, int ilə müqayisədə daha böyük rəqəmlər saxlayır, amma dəqiqlikdən imtina edirik. Mantissanın saxlanması üçün yaddaşın bir hissəsi götürülür, buna görə belə ədədlər cəmi 6-7 rəqəmi saxlayır, digər rəqəmlər isə atılır.
Nümunə:
| Kod | Dəyişənin dəyəri |
|---|---|
|
123.45679 |
|
12346.0 |
|
-1.2345679 |
Gördüyünüz kimi, bu tipin əsas çatışmazlığı — çox az mənalı rəqəm saxlamaq qabiliyyəti və səkkizinci rəqəmdən sonra dəqiqliyin itirilməsidir. Buna görə float tipi Java proqramçılar arasında çox da populyar deyil.
double tipi
double tipi üzən nöqtə ilə standart tipdir. Adı double floating point ifadəsindən gəlir. Bəzən ona ikisəviyyəli dəqiqliklə üzən nöqtəli ədəd deyirlər. Bütün onluq ədəd literalları avtomatik olaraq double tipinə aid olur.
Bu tip 8 bayt yaddaş (64 bit) tutur və -1.7*10308-dən 1.7*10308-ə qədər dəyər saxlayır. Əsas məqam ondadır ki, bu tipin mantissasına 53 bit, qalan 11 bit isə eksponentaya ayrılır.
Bu, 15-17 mənalı rəqəm saxlamağa imkan verir.
Nümunə:
| Kod | Dəyişənin dəyəri |
|---|---|
|
1234567890.1234567 |
|
1234567890.1234512 |
|
1234567890.1357913 |
Bu dəqiqlik, xüsusilə float ilə müqayisədə, əsasdır: üzən nöqtəli ədədlər ilə əməliyyatların 99%-i double tipi ilə həyata keçirilir.
Eksponent üçün 11 bit ayrılır ki, bu da onluq qüvvətləri -323-dən +308-ə qədər saxlamağa imkan verir (ikilik qüvvətləri isə -1024-dən +1023-ə qədər). double tipi asanlıqla yüz sıfırdan sonra nöqtəli ədəd saxlaya bilir:
| Kod | Dəyişənin dəyəri |
|---|---|
|
600.0 |
4. Sonsuzluq
Floating-point (üzən vergül) ədədləri daha bir maraqlı xassəyə malikdir: onlar xüsusi bir dəyəri - sonsuzluğu saxlamağa imkan verir. Həm də müsbət sonsuzluq və mənfi sonsuzluq ola bilər.
Nümunələr:
| Kod | Qeyd |
|---|---|
|
|
|
|
|
|
Əgər sonsuzluğu bir ədədə vurursansa, nəticə yenə sonsuzluq olacaq. Əgər sonsuzluğa bir ədəd əlavə edirsənsə, nəticə yenə də sonsuzluq olacaq. Çox rahatdır.
Sayı deyil (NaN)
Sonsuzluqla bağlı əməliyyatların hamısı sonsuzluq verir. Ümumiyyətlə, doğrudur, amma hamısı yox.
Floating-point ədədləri daha bir xüsusi dəyəri saxlayır — NaN. Bu, Not a Number (sayı deyil) ifadəsindən götürülüb.
Riyaziyyatda, əgər sonsuzluğu sonsuzluğa bölsək, qeyri-müəyyənlik yaranmalıdır.
Amma Java-da əgər sonsuzluğu sonsuzluğa bölsək, nəticə NaN olacaq.
Nümunələr:
| Kod | Qeyd |
|---|---|
|
|
|
|
|
|
NaN ilə aparılan istənilən əməliyyat NaN verir.
5. char tipi
Java-da primitiv tiplər arasında daha bir tip var ki xüsusi diqqətə layiqdir — bu char tipidir. Adı Character sözündən irəli gəlir və bu tip simvolları saxlamaq üçün istifadə olunur.
Simvollar isə məhz sətirləri təşkil edən elementlərdir: hər bir sətir simvollar massivindən ibarətdir.
Amma daha maraqlısı budur ki, char tipi həm də rəqəm tipidir! Başqa sözlə, bu tip iki məqsədlidir.
Əslində isə char tipi simvolları deyil, Unicode kodlaşdırmasından olan simvol kodlarını saxlayır. Hər bir simvolla müəyyən bir rəqəm — simvolun rəqəm kodu uyğun gəlir.
char tipində olan hər dəyişən yaddaşda iki bayt yer tutur (elə short kimi). Amma fərqli olaraq short tipindən, tam ədəd tipi olan char işarəsizdir və 0-dan 65,535-ə qədər olan dəyərləri saxlaya bilər.
char tipi — hibrid bir tipdir. Onun dəyərləri həm ədəd (toplama və vurma əməliyyatlarını yerinə yetirmək olar), həm də simvol kimi şərh edilə bilər. Belə edilməsinin səbəbi odur ki, simvollar vizual təqdimata malik olsa da, kompüter üçün onlar ilk növbədə sadəcə rəqəmlərdir. Və onlarla rəqəm kimi işləmək çox daha rahatdır.
Unicode
Unicode — bu, dünya üzrə bütün simvolları əhatə edən xüsusi bir cədvəl (kodlaşdırma)dir. Və hər bir simvolun öz nömrəsi var. Təxminən belə görünür:

char tipli dəyişənə müxtəlif yollarla dəyər mənimsətmək olar.
| Kod | İzah |
|---|---|
|
a dəyişəni latın hərfi A saxlayacaq. |
|
a dəyişəni latın hərfi A saxlayacaq. Onun kodu məhz 65-dir. |
|
a dəyişəni latın hərfi A saxlayacaq.Onun kodu məhz 65-dir ki, bu da onaltılıq sistemdə 41-ə bərabərdir. |
|
a dəyişəni latın hərfi A saxlayacaq.Onun kodu məhz 65-dir ki, bu da onaltılıq sistemdə 41-ə bərabərdir.İki əlavə sıfır heç nəyi dəyişmir. |
|
a dəyişəni latın hərfi A saxlayacaq.Koduna görə simvolu təyin etmənin başqa bir yolu. |
Ən çox sadəcə simvolu dırnaq içində göstərirlər (cədvəlin birinci sətrində olduğu kimi). Amma sonuncu üsul da populyardır. Bu üsulun üstünlüyü odur ki, onu sətirlərdə də istifadə etmək olar.
Dediyimiz kimi, char tipi həm də tam ədəd tipi olduğu üçün bu cür də yazmaq olar:
| Kod | Ekran çıxışı |
|---|---|
|
Ekranda latın hərfi B göstəriləcək.Çünki: A – 65B – 66C – 67 |
char tipi ilə iş
Hər char simvolu əslində ilk növbədə rəqəmdir (simvolun kodu), daha sonra isə simvoldur. Simvolun kodunu bildikdə, onu proqramda əldə etmək həmişə mümkündür. Misal:
| Kod | Ekran çıxışı |
|---|---|
|
|
Standart kodlar
Ən tanınmış simvol kodları bunlardır:
| Simvollar | Kodlar |
|---|---|
0, 1, 2, ... 9 |
48, 49, 50, ... 57 |
a, b, c, ... z |
97, 98, 99, ... 122 |
A, B, C, ... Z |
65, 66, 67, ... 90 |
6. boolean tipi
Və nəhayət, sonuncu primitiv tip — boolean tipidir.
Artıq bildiyiniz kimi, bu, sadəcə iki dəyər ala bilər: true və false.
Əslində, bu tip barədə artıq biləcəyiniz hər şeyi bilirsiniz.
GO TO FULL VERSION