Dans ce chapitre, nous allons revenir un peu plus en detail sur les notions de type et d’expression.
Un type designe un ensemble de valeurs. Par exemple, le type int de Java, designe l’ensemble de tous les nombre entiers representables en machine sur 32 bits {−231, . . . , 231}. En programmation, les types des données sont utilisés pour regrouper les valeurs qu’on veut manipuler en categories bien distinctes. On cherche a distinguer les données selon leur nature (entiers, reels, chaines de caracteres, etc), dans une classification qui est semantique. Differencier les valeurs selon leur type a au moins deux grands avantages :
– Connaissance de la place necessaire au stockage : toutes les données ne sont pas representées de la meme maniere. Pour un entier, on utilise en general un emplacement de 32 bits, alors que pour un boolean, un seul bit suffit. Dés lors, si on declare le type d’une variable, le compilateur sait precisement combien de place il faudra reserver en memoire pour la stocker..
4.1 Types de base (primitifs)
Il s’agit de byte, short, int, long, char, float, double, boolean. Nous commencons par une description des types et de leurs constantes et nous verrons plus tard leurs operateurs.
4.1.1 Types numériques
Ces types modelisent les nombres entiers et flottants avec plusieurs tailles de representation. Plus grande est la taille des mots utilisés en memoire pour les representer, plus grande est leur precision.
4.1.2 Les booleans
Le type boolean modelise les deux valeurs de verité dans la logique propositionnelle. Ses constantes : true et false.
4.1.3 Les caracteres
Le type char modelise l’ensemble des caract`eres Unicode (sur 16 bits). Les constantes sont, soit des caracteres entourés de guillements simples, p.e : ‘a‘, ‘2‘, ‘@‘ ; soit l’encodage alphanumérique d’un caract`ere Unicode. Exemples :
– Nouvelle ligne : \n
– Tabulation : \t
– Saut de page : \f
– Backlash, apostrophe, guillemets : \\ \’ \ »
– Carcatere Unicode 0xFFFF : \uFFFF
4.2 Operateurs et expressions
Un operateur permet de réaliser des calculs sur une ou plusieurs valeurs appelées operandes. Les operateurs agissant sur une operande sont dits unaires, sur deux, binaires et sur trois, ternaires. Ex :
+ est un operateur binaire, alors que l’operateur de negation ! est unaire. On ecrira 3+x et !(true)
Les expressions sont les constructions d´ecrivant les op´erations avec operandes et operateurs.
Les operandes d’une expression peuvent etre des constantes, des variables avec une valeur connue (ayant eté initialisées) et egalement les appels de fonctions.
– Expression arithmetique (2 + x*5) : + et * sont les operateurs et 2,x,5 sont les operandes.
– dans (5 + Math.min(2,3)), Math.min est le nom d’une fonction, et 2,3 sont les valeur ou arguments sur lesquelles on l’applique. Dans le cas present, elle donne en resultat le nombre minimum parmi ses deux arguments, a savoir, 2.
– 2 > 5 est une expression boleenne. Son resultat est un boolean (false).
4.2.1 Resultat d’une expression
Une expression correspond toujours a la valeur du calcul qu’elle décrit. On dit qu’elle renvoie cette valeur.
Le resultat d’une expression est une valeur du langage. Selon qu’il soit numerique, boolean, etc, on parle d’expressions arithm´etiques, booléennes, etc. Ex : l’expression 2+3*5 renvoie la valeur 17.
Nous utiliserons la notation 2+3*5 ⇒ 17.
Executer une expression consiste a calculer sa valeur : a l’evaluer. Cette evaluation peut dependre de la valeur des variables dans l’environnement du programme (memoire).
4.2.2 Operateurs arithmetiques
Ils permettent d’op´erer sur toutes les valeurs des types numériques de Java : byte, short, int, long, float et double.
+ (addition),
– (soustraction),
* (multiplication),
/ (division entiere).
% (reste de la division entiere).
4.2.3 Conversions implicites entre types (primitifs)
Une operation entre nombres resulte toujours en une valeur de type numerique. La nature du type obtenu d´epend des types des operandes et operateurs :
– toutes les operandes sont de meme type : le resultat de l’operation est du type commun.
– si operandes de types differents : Les operations en Java se font seulement si toutes les operandes sont de meme type. Ainsi, le compilateur realise une conversion implicite du type des opérandes de maniere a les rendre uniformement representées. Elle se fait vers le type le plus grand des types des operandes selon la table de conversion donnée plus bas.
– Toute conversion contraire au sens donnée par cette table, doit se faire explicitement.