Tout d'abord, Java a une typage fort. Contrairement à javascript ou php, Java doit savoir quel est le type de la variable déclarée. C'est pourquoi, il existe 8 type de base. Ces type sont dit primitifs.
Type | Occupation mémoire (bits) | Utilisation | Valeurs mini, maxi |
---|---|---|---|
byte | 8 | Entier signé | |
short | 16 | Entier signé | |
int | 32 | Entier signé | |
long | 64 | Entier signé | |
float | 32 | Réel 7 chiffres significatifs | |
double | 64 | Réel 15 chiffres significatifs | |
char | 16 | Caractère Unicode | |
boolean | 1 | Booléen (vrai, faux) | True, false |
Pour éviter d'être trop long, je ne vais pas détailler ces types. Sachez néanmoins que chacun a son utilité.
Dans certains cas, il est nécessaire de convertir un type de variable en un autre type.
Par exemple, il peut être nécessaire de transmettre une variable de type int à une fonction qui n’accepte que des variables de type float .
Convertir le type d’une variable s’appelle transtypage, ou cast en anglais.
Pour transtyper une variable, il suffit de faire précéder l’identificateur de la variable du type voulu entre parenthèses. L’exemple suivant montre comment la variable nx, de type int, peut être transtypée en type float :
int nx = 3 ;
float df = (float) nx ;
Les transtypages sont des opérations délicates, car il y a des risques de perte d’informations. Par exemple, lors d’un transtypage d’une variable de type long de 64 bits en une variable de type int de 32 bits, le compilateur ignore les 32 bits de poids fort de la variable de type long. Si la valeur de la variable de type long dépasse 32 bits au moment du transtypage, le transtypage attribue une valeur inexacte à la variable de type int.
En règle générale, le type cible du transtypage doit avoir une taille au moins égale au type initial. Le tableau suivant montre les transtypages qui ne risquent pas de provoquer des pertes d’informations :
Type initial | Transtypage |
---|---|
byte | short, char , int, long, float, double |
short | int, long , float, double |
char | int, long , float, double |
int | long, float , double |
Long | float, double |
Float | double |
Dans certains cas, un transtypage peut être réalisé implicitement par le compilateur. Voici un exemple :
int nx = 0x41; // notation héxa pour la valeur 65 (code ASCII de 'A')
if (nx > 'a')
{
…
}
Dans ce cas, la valeur 'a' est convertie en nombre entier (valeur ASCII de la lettre a) avant d’être comparée au nombre 65 .
Java est nativement un langage Objet. De ce fait, il existe aussi des types objets comme par exemple la chaine de caractère String
. Ces types se caractérise déjà par la façon dont on les nommes. Tous types objet a une majuscule. De plus, mais nous le verrons par la suite, un objet détient des méthodes (fonctions).
exemple:
String mot = "java";
String motMaj = mot.toUpperCase(); // donne JAVA
De même, les types primitifs ont un équivalent objet que l'on appelle "wrapper".
Type Primitif | Wrapper |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Char |
boolean | Boolean |