İ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]
