CodeGym /Kurslar /Java SELF AZ /Java-dakı literal'lar

Java-dakı literal'lar

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Tam ədədlərin literalları

İndi isə yeni maraqlı mövzu — literallar. Birbaşa proqramın koduna yazılmış məlumatlara literallar deyilir. Bu halda söhbət hər hansı məlumatdan yox, primitiv tiplərin və String tipinin dəyərlərindən gedir.

Məsələn, sizdə belə bir kod var:

Kod Literallar
int a = 5;
int b = a + 10;
String s = "Sum=" + (a + b);
5
10
"Sum="

Literallar bu kodda — 5 sayı, 10 sayı və Sum= sətridir.

Java dilində hər şey, o cümlədən literalların tipi var. Kodda olan bütün tam ədədlərin literalları (tam ədədlər) int tipinə malikdir. int tipi Java-da tam ədədlər üçün standart tipdir.

Bununla belə, kodunuzda tam ədəd literallarını byte və ya short tipli dəyişənə təyin etmək qərarına gəlsəniz, heç bir problem yaranmayacaq. Bir şərtlə ki, literalların dəyərləri dəyişən tipinin mümkün dəyərlər diapazonunda yerləşsin.

Java kompilyatoru kifayət qədər ağıllıdır ki, byte tipli dəyişənə 100 ədədinin təyin edilə biləcəyini anlasın və heç bir problem yaranmasın.

Nümunələr:

Kod Təsvir
int a = 300;
Mükəmməl kompilyasiya olunur.
byte a = 100; 
Mükəmməl kompilyasiya olunur.
byte a = 300; 
Kompilyasiya xətası olacaq: maksimum byte tipinin dəyəri 127-dir.

Kodda həmçinin long tipli literallar yaza bilərsiniz. Bunun üçün tam ədədin sonunda latın hərfi L və ya l yazmalısınız.

Nümunələr:

Kod Təsvir
long a = 3000000000L; 
Mükəmməl kompilyasiya olunur.
long a = 3000000000; 
Kompilyasiya xətası: 3 milyard int tipli literal üçün çox böyükdür.
int a = 3000000000L; 
Kompilyasiya xətası: literalın tipi long-dur, dəyişənin tipi isə int. Üstəlik, 3 milyard int tipli ədədlərin maksimum dəyərindən böyükdür.

Dikkat ettinizmi, 10 və daha çox rəqəmi olan böyük ədədləri oxumaq nə qədər çətindir? Kodda 3 milyard olduğunu və ya 30 olduğunu dərhal başa düşmək olmur? Kodun oxunmasını asanlaşdırmaq üçün (bu vacibdir!), Java-da ədədi literallara alt xətt simvollarını daxil etməyə icazə verdilər (bunlar ədədin dəyərinə təsir etmir).

Yuxarıdakı nümunəni alt xətt simvollarından istifadə etməklə yenidən yazmaq olar və bu bir az daha aydın olacaq:

Kod Təsvir
long a = 3_000_000_000L; 
Mükəmməl kompilyasiya olunur.
long a = 3_000_000_000; 
Kompilyasiya xətası: 3 milyard int tipli literal üçün çox böyükdür.
int a = 3_000_000_000L; 
Kompilyasiya xətası: literalın tipi long, dəyişənin tipi isə int. Üstəlik, 3 milyard int tipli maksimal dəyərdən böyükdür.

Ədədi literal daxilində vergül istifadə etmək qadağan idi, çünki o artıq istifadə olunur. Məsələn, metodu çağırarkən arqumentləri bir-birindən ayırmaq üçün.



2. Üzən nöqtəli ədədlərin literalları

Kodda yalnız tam ədəd deyil, həm də üzən nöqtəli literalları (real ədədlər) təyin etmək olar.

Qayda çox sadədir: əgər kodda bir rəqəm var və onun yazılışında nöqtə mövcuddursa, bu rəqəm üzən nöqtəli literal olur. Və sadəcə literal deyil, double tipli literal olur.

float tipli literal da yaratmaq olar, amma bunun üçün ədədin sonuna F (və ya f) hərfini əlavə etmək lazımdır.

Misallar:

Kod Təsvir
double a = 100.0; 
Müvəffəqiyyətlə kompilyasiya olunur.
double a = 100.;
Müvəffəqiyyətlə kompilyasiya olunur.
double a = .0;
Müvəffəqiyyətlə kompilyasiya olunur.
float a = 100.0f; 
Müvəffəqiyyətlə kompilyasiya olunur.
float a = 100.0; 
Kompilyasiya xətası: dəyişən float tipindədir, literal isə double tipində.

Bu arada, tam ədədi float və ya double tipinə çevirmək üçün sadəcə sonuna uyğun olaraq F (float üçün) və ya D (double üçün) əlavə etmək kifayətdir. Misallar:

Kod Təsvir
double a = 100D; 
Müvəffəqiyyətlə kompilyasiya olunur.
float a = 100F; 
Müvəffəqiyyətlə kompilyasiya olunur.
int a = 300D; 
Kompilyasiya xətası: dəyişən int tipindədir, literal double tipindədir.

Üzən nöqtəli literalların bir də «elmi yazılış forması» var: rəqəmin işarəli hissəsinə əlavə olaraq onun onluq dərəcəsini də göstərmək olar. Misal:

Literal Riyazi yazılışı Nəticə dəyəri
1.23E2
1.23 * 102
123.0
1.23E3
1.23 * 103
1230.0
1.23E-6
1.23 * 10-6
0.00000123
1E6
1.0 * 106
1000000.0
1E-10
1.0 * 10-10
0.0000000001


3. Sətir literalları

Kodda həmçinin bütöv mətn sətirləri də müəyyənləşdirilə bilər. Kompilyator sətiri məhz məlumat (mətn sətiri) kimi qəbul etsin deyə, bütün sətir iki tərəfdən ikiqat dırnaq işarələri ilə əhatə olunur.

Əgər kod sətirində çoxlu ikiqat dırnaq işarəsi varsa, onlar cütlərə bölünür. Birinci ikiqat dırnaq işarəsi literalın başlanğıcını bildirir, ondan sonra gələn isə literalın sonunu. Ondan sonra gələn – yenə yeni literalın başlanğıcı, ondan sonra gələn – ikinci literalın sonu və s.

Hər belə literalın tipi String-dir.

Nümunələr

Kod İzah
"+" + "+" + "+" + "+" + "+"
Sətrin içində 5 literal var, hər biri bir simvoldan, + ibarətdir.
""
Boş sətir literalı. Heç bir simvol olmayan sətir.
"2+3" + "-5"
Burada iki literal var. Nəticədə 2+3-5 olan bir sətir alınacaq, amma bu rəqəm deyil.
"return" + ";"
Burada da iki literal var. Burada return operatoru yoxdur.

Əgər mətn literalı çox uzundursa, onu bir neçə sətrə bölmək və «üstəgəl operatoru» ilə birləşdirmək olar:

Kod İzah
String s = "Fırtına göyləri örtür "
         + "Qar burulğanları ilə "
         + "Bəzən heyvan kimi ulayır "
         + "Bəzən uşaq kimi ağlayır";
Əgər bu sətir ekrana çıxarılarsa, bütün mətn bir sətirdə göstəriləcək!


4. Simvol Literalları

Kodda təkcə sətir literalları deyil, həmçinin ayrıca simvolların literallarını da təyin etmək olar. Bu halda söhbət tək simvoldan ibarət olan sətirdən yox, char tipinin literallarından gedir.

Simvol literalı tək dırnaqlarla çərçivələnir, sətri isə fərqli olaraq. Tək dırnaqların içərisində mütləq bir simvol olmalıdır və yalnız bir. Boş tək dırnaqlar ola bilməz.

Nümunələr:

Kod İzah
'A'
char tipli literal. Latın hərfi A-nı ehtiva edir.
'@' 
char tipli literal. @ simvolunu ehtiva edir.
'' 
char tipli literal. Yapon əlifbasının hieroqrafını ehtiva edir. Bəli, bu cür də mümkündür.
'\u1f3a'
char tipli literal. Unicode kodlaşdırmasından onun nömrəsi ilə təyin olunmuş simvolu ehtiva edir.

Sonuncu nümunədə xüsusi yazı üsulu ilə Unicode kodlaşdırmasından simvol təyin olunur: əvvəlcə prefiks \u, sonra isə 4 onaltılıq simvol gəlir. Bu barədə daha ətraflı növbəti mühazirələrdə danışılacaq.


Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION