– Szia Amigo!

– Szia, Ellie!

"Ma jó kedvem van, úgyhogy van kedvem valami érdekeset mondani. Kezdem azzal, hogy a Java típusrendszere hogyan bánik a primitív típusokkal."

" A Java-ban minden objektumnak és minden változónak megvan a maga előre beállított változtathatatlan típusa. A primitív változó típusát a program fordításakor határozzák meg, de az objektum típusát a létrehozáskor. Az újonnan létrehozott objektum és/vagy változó típusa változatlan marad élete során. Íme egy példa:"

Java kód Leírás
int a = 11;
int b = 5;
int c = a / b; // c == 2
a / b– egész számok osztását jelenti. A válasz kettő. Az osztási művelet maradékát egyszerűen figyelmen kívül hagyja.
int a = 13;
int b = 5;
int d = a % b; // d == 3
daeltárolja az egész számmal való osztásának maradékát b. A maradék 3.

"Van néhány érdekes árnyalat, amelyet emlékezned kell."

"Először is, a referenciaváltozó nem mindig olyan értékre mutat, amelynek típusa megegyezik vele."

"Másodszor, amikor két különböző típusú változó kölcsönhatásba lép egymással, először azonos típusúvá kell konvertálni őket."

"Mi a helyzet az osztással? Ha 1-et osztunk 3-mal, 0,333(3)-at kapunk. Ugye?"

"Nem, ez nem helyes. Ha elosztunk két egész számot, az eredmény is egész szám. Ha 5-öt oszt 3-mal, akkor a válasz 1 lesz, a maradék pedig kettő. A maradékot pedig figyelmen kívül hagyja."

"Ha elosztjuk 1-et 3-mal, 0-t kapunk (az 1-es emlékeztetővel, amelyet figyelmen kívül hagyunk)."

– De mit csináljak, ha 0,333-at akarok kapni?

"Javában az osztás végrehajtása előtt a legjobb egy számot lebegőpontos (tört) típussá alakítani úgy, hogy egy lebegőpontos 1-gyel (1.0) megszorozzuk."

Java kód Leírás
int a = 1/3;
a0 lesz
double d = 1/3;
 d 0,0 lesz
double d = 1.0 / 3;
d0,333 (3) lesz
double d = 1 / 3.0;
d0,333 (3) lesz
int a = 5, b = 7;
double d = (a * 1.0) / b;
d0,7142857142857143 lesz

"Megvan."