1. Hansı növ ədədlər var?
Proqramlaşdırmada biz daima ədədlərlə işləyirik — istifadəçinin yaşından tutmuş qalaktikadakı ulduzların sayına və ya bank hesabındakı qəpiklərə qədər. Amma müxtəlif tapşırıqlar müxtəlif növ ədədlər tələb edir: bəzən yalnız tam ədədləri saxlamaq vacibdir, bəzən — çox dəqiq kəsrlər, bəzən də “mənfisiz” ədədlər lazımdır.
Tam ədədlər (int və digərləri)
Tam ədəd — kəsr hissəsi olmayan ədəd deməkdir.
Java-da ən çox int tipindən istifadə olunur, lakin bundan başqa ölçü və diapazona görə fərqlənən bir neçə variant daha var.
- int — tam ədədlər üçün əsas “işçi” tip. Çox böyük (və çox kiçik) dəyərləri saxlaya bilir və yaddaş da o qədər də çox tutmur. Məsələn, bəyənmələrin sayını, yaşı, ildəki günlərin sayını hesablamaq üçün əksər hallarda int istifadə olunacaq.
- long — dəyərlər çox böyük ola bilərsə (məsələn, milyardlar və ya trilyonlar) istifadə olunur. Nümunə: YouTube-un bütün tarix boyu baxışlarının ümumi sayını saxlamaq.
- short — qənaətcil, lakin nadir istifadə olunan tip. Eyni kiçik dəyərlərin çox olduğu yerlərə uyğundur (məsələn, audio məlumatları, rəng komponentləri).
- byte — daha da kiçik dəyərlər üçün, xüsusilə qrafikada və fayllarla işdə yaddaşa qənaət vacib olanda.
Kəsr ədədlər (double, float)
Bəzən kəsr hissəsi olan ədədlərlə işləmək lazım olur. Məsələn, hava temperaturu, tələbənin orta balı, qəpikli malın qiyməti.
- double — kəsr ədədləri saxlamaq üçün “standart” tipdir. Əksər hesablamalar üçün kifayət qədər dəqiqdir (nümunə: 3.1415926535…).
- float — daha yüngül və daha az dəqiqliyə malik tip; yaddaşa qənaətin vacib olduğu kompüter qrafikası və ya böyük massivlərin emalı kimi tapşırıqlarda daha çox rast gəlinir.
Xüsusi ədədi tiplər
- BigInteger — standart diapazonları aşan nəhəng ədədlərlə işləmək lazım olduqda, məsələn, kriptoqrafiyada və ya astronomik hesablamalarda.
- BigDecimal — kəsr ədədlərlə dəqiq hesablamalar (maliyyə, faiz hesabı) üçün sinif; double və float üçün səciyyəvi olan qeyri-dəqiqliklərin qarşısını almağa kömək edir.
2. Dəyərlərin diapazonları
Tam tiplər həm müsbət, həm də mənfi ədədləri saxlaya bilər. Bu, dəyərlər “sıfırdan həm yuxarı, həm də aşağı” ola bildikdə rahatdır: məsələn, temperatur, hesabın balansı, dəniz səviyyəsinə nəzərən hündürlük.
Nümunə:
- int : -10, 0, 50
- long : 0, 10, -1000_000_000_000_000_000L
Tam tiplər
| Tip | Ölçü | Dəyərlər diapazonu | İstifadə nümunəsi |
|---|---|---|---|
|
1 bayt | -128-dən 127-yə qədər | -128, 0, 127 |
|
2 bayt | -32 768-dən 32 767-yə qədər | -1000, 0, 32000 |
|
4 bayt | -2 147 483 648-dən 2 147 483 647-yə qədər | -1000000, 0, 2000000 |
|
8 bayt | -9 223 372 036 854 775 808-dən 9 223 372 036 854 775 807-yə qədər |
-10_000_000_000, 1 |
Kəsr tiplər
| Tip | Ölçü | Dəyərlərə nümunə | Təsvir |
|---|---|---|---|
|
4 bayt | 3.14f, -0.001f | tək dəqiqlik (7 rəqəm) |
|
8 bayt | 3.1415, -1.7E+308 | ikiqat dəqiqlik (15–16 rəqəm) |
3. Ədədlər üçün suffikslər
Bəzi hallarda hansı tipdən istifadə etmək istədiyini açıq şəkildə göstərmək lazımdır. Bu, suffikslər vasitəsilə edilir:
- L və ya l — long tipi üçün (məsələn, 10000000000L)
- F və ya f — float tipi üçün (məsələn, 3.14f)
- D və ya d — double tipi üçün (adətən lazım deyil, çünki suffikssiz kəsr ədədlər — double olur)
Suffiks göstərilməsə, susmaya görə tam ədəd int, kəsr ədəd isə double sayılır. Məsələn, 42 — bu, int, 3.14 — bu, double-dır.
Bu nə üçündür? Məsələn, long tipli dəyişənə böyük ədəd mənimsədərkən xəta almamaq üçün:
long bigNumber = 9000000000L; // L silinsə, kompilyasiya xətası olacaq
Alt xətt şəklində ayırıcı _
Rəqəmlər uzun olanda, sıfırlarda çaşmaq asandır. Oxunaqlığı artırmaq üçün Java-da ədədin içində alt xətlərdən istifadə etmək olar.
int population = 146_700_000;
long stars = 100_000_000_000L;
Bu tamamilə qanunidir: kompilyator alt xətləri görməzdən gəlir, sizin üçün isə dərhal dərəcələri “gözlə” görmək rahatdır. Əsas odur — alt xətti əvvəldə, sonda, nöqtədən sonra və ya suffiksdən əvvəl qoymayın.
4. Simvol tipi char: nədir və nə üçün?
char tipi bir simvolu saxlamaq üçün istifadə olunur: hərf, rəqəm, durğu işarəsi, boşluq, xüsusi simvol və hətta smayl.
Nümunələr:
char letter = 'A';
char digit = '7';
char symbol = '?';
char cyrillic = '\u0416';
char euro = '€';
char smile = '☺'; // Bəli, belə də olar!
Vacib qaydalar:
- char tipinin dəyəri tək dırnaq içində yazılır: 'A', '7', '#'.
- Bu məhz bir simvoldur! 'AB' yazsanız — kompilyator etiraz edəcək.
- Hər simvolun arxasında öz say kodu (Unicode) dayanır.
Unicode: dünyanın hər yerindən simvollar
Java Unicode standartından istifadə edir ki, bu da yalnız latın hərflərini deyil, həm də kiril əlifbasını, heroqlifləri, emojiləri və hətta qədim misir heroqliflərini (lazım olsa) saxlamağa imkan verir.
Maraqlı fakt:
char tipi, əslində, 16-bitlik ədəddir (0-dan 65535-ə qədər) və hər bir dəyərə müvafiq simvol uyğun gəlir.
5. Simvollar və ədədlər: Unicode vasitəsilə əlaqə
Hər simvol daxilən bir ədəd olduğuna görə, char-ı int-ə və əksinə rahatlıqla çevirmək olar.
Nümunə: simvolun Unicode kodunu öyrənmək
public class CharToInt {
public static void main(String[] args) {
char ch = 'A';
int code = ch; // char → int qeyri-aşkar çevrilməsi
System.out.println("Simvolun kodu '" + ch + "': " + code);
}
}
Nəticə:
Simvolun kodu 'A': 65
İndi isə əksinə — koddan simvol almaq:
public class IntToChar {
public static void main(String[] args) {
int code = 1040; // 1040 — Unicode kodu (U+0410), kiril əlifbasındakı 'A' hərfi
char ch = (char) code; // int → char açıq çevrilmə
System.out.println("Kodu " + code + " olan simvol: " + ch);
}
}
Nəticə:
Kodu 1040 olan simvol: \u0410
6. Java-nın əsas primitiv tipləri
| Tip | Ölçü (bit) | Dəyərlər diapazonu | Dəyərə nümunə | Qeyd |
|---|---|---|---|---|
|
8 | -128 ... 127 | 42 | Çox nadir hallarda istifadə olunur |
|
16 | -32,768 ... 32,767 | 12345 | Yaddaşa qənaət üçün |
|
32 | -2,147,483,648 ... 2,147,483,647 | 1000000 | Tam ədədlər üçün əsas tip |
|
64 | ≈ −9.22 × 1018 ... ≈ 9.22 × 1018 | 5000000000L | Çox böyük tam ədədlər üçün |
|
32 | ~±3.4 × 10-38 ... ±3.4 × 1038 | 3.14f | Kəsr ədədlər, aşağı dəqiqlik |
|
64 | ~±1.7 × 10-308 ... ±1.7 × 10308 | 2.718 | Kəsr ədədlər, yüksək dəqiqlik |
|
16 | 0 ... 65 535 (Unicode) | '\u0416', 'A', '?' | Bir simvol |
|
1 | true, false | true | Məntiqi dəyər |
GO TO FULL VERSION