« Salut, Amigo ! »

« Bonjour Ellie ! »

« Je suis de bonne humeur aujourd'hui, alors je voudrais te parler de quelque chose d'intéressant. Je vais commencer par la façon dont le système de typage de Java traite les types primitifs. »

"En Java, chaque objet et chaque variable a son propre type prédéfini et inchangeable. Le type d'une variable primitive est déterminé lors de la compilation du programme, mais le type d'un objet est déterminé à sa création. Le type d'une variable ou d'un objet nouvellement créé reste inchangé tout au long de sa vie. Voici un exemple : »

Code Java Description
int a = 11;
int b = 5;
int c = a / b; // c == 2
a / b – représente une division entre entiers. La réponse est deux. Le reste de l'opération de division est tout simplement ignoré.
int a = 13;
int b = 5;
int d = a % b; // d == 3
d stockera le reste de la division entre les entiers a et b. Le reste est de 3.

« Voici des nuances intéressantes que tu dois retenir. »

« D'abord, une variable de référence ne pointe pas toujours vers une valeur du même type. »

« Ensuite, quand des variables de deux types différents interagissent, elles doivent d'abord être converties dans le même type. »

« Et la division, alors ? Si on divise 1 par 3, on obtient 0.333(3). Non ? »

« Eh bien non. Quand tu divises deux entiers, le résultat est également un entier. Si tu divises 5 par 3, la réponse sera 1, avec un reste de 2. Et le reste sera ignoré. »

« Si on divise 1 par 3, on obtient 0 (avec le reste 1, qui sera ignoré). »

« Mais si je veux avoir 0.333, alors ? »

« En Java, avant d'effectuer la division, il est préférable de convertir un nombre en type de nombre à virgule flottante (fractionnaire) en le multipliant par un nombre à virgule flottante (1,0). »

Code Java Description
int a = 1/3;
a vaudra 0
double d = 1/3;
 d vaudra 0.0
double d = 1.0 / 3;
d vaudra 0.333(3)
double d = 1 / 3.0;
d vaudra 0.333(3)
int a = 5, b = 7;
double d = (a * 1.0) / b;
d vaudra 0.7142857142857143

« Compris. »