İmtahanda hansı tipin nə qədər yaddaş kapsadığını bilməyə ehtiyac yoxdur, amma hansı tipin digərindən daha böyük olduğunu bilmək lazımdır.
Operatorlar dəyişənlərə tətbiq edilərkən aşağıdakı qaydalar mütləq yadda saxlanılmalıdır,
Numeric Promotion Rules:
1. Əgər verilmiş iki dəyər fərqli tiplərdədirsə, java bu iki tipdən birini bunlardan ən yüksək olan digərinin tipinə çevirəcək/yüksəldəcək (promote);
(ex, short & int ⇒ int & int)
int x = 1;
long y = 33;
- x*y ⇒ result is
long
2. Əgər dəyərlərdən biri tam (integral), digəri onluq (floating-point) ədəddirsə, java avtomatik olaraq tam ədədi onluq ədəd tipinə çevirəcək;
(ex, double & int ⇒ double & double)
double x = 39.21;
int y = 2;
- x+y ⇒ result is
double
3. byte
, short
və char
tiplərində olan dəyişənlər java binary aritmetik operatorlarla istifadə edilərkən əvvəlcə (əməliyyatdan öncə) int
tipinə çevrilirlər, hətta həmin verilənlərdən heç biri int
tipində olmasa belə;
(ex, short + short ⇒ int)
short x = 10;
short y = 3;
- x/y ⇒ result is
int
4. Əgər verilənlər hamısı eyni tipdədirsə, nəticə də eyni tipdə olacaq (istisnalardan başqa);
(ex, int + int ⇒ int)
short x = 14;
float y = 13;
double z = 30;
- x * y / z ⇒ result is
double
Bu nümunədə bütün qaydalar tətbiq olunur. Aritmetik binary operator istifadə edildiyindən x
avtomatik olaraq int
tipinə çevrilir. Sonra y
dəyişəninə vurulduğu üçün x
avtomatik olaraq float
tipinə çevrilir. Sonra x*y
ifadəsi z
dəyişəninə bölünə bilməsi üçün double
tipinə çevirilir və bölündükdən sonra son nəticə double
olur.
Bu mövzu ilə bağlı aşağıdakı linkdən maraqlı kod nümunələrinə baxa bilərsiniz:
http://www.coderanch.com/t/655528/ocajp/certification/Numeric-promotion-rules
[topics lang=az]