Java est un langage orienté objet, c'est-à-dire qu'il manipule des classes, ou plus exactement des objets, qui sont des instances de ces classes. Les données manipulées avec Java, et que l'on utilise au travers de variables, sont donc typées, le type d'un objet correspond à la classe qu'il instancie.
Toutefois il existe quelques types primitifs, permettant de manipuler directement les données les plus courantes. Ces données sont notamment spécifiées par une représentation en mémoire, et donc à un nombre d'octets prédéfinis.
Voici un tableau répertoriant les huit types primitifs du langage Java :
| Type | Signification | Taille (en octets) | Plage de valeurs acceptées |
|---|---|---|---|
| char | Caractère Unicode | 2 | '\u0000' → '\uffff' (0 à 65535) |
| byte | Entier très court | 1 | -128 → +127 |
| short | Entier court | 2 | -32 768 → +32 767 |
| int | Entier | 4 | -231≈-2,147×109 → +231-1≈2,147×109 |
| long | Entier long | 8 | -263≈-9,223×1018 → +263-1≈9,223×1018 |
| float | Nombre réel simple | 4 | ±2-149≈1.4×10-45 → ±2128-2104≈3.4×1038 |
| double | Nombre réel double | 8 | ±2-1074≈4,9×10-324 → ±21024-2971≈1,8×10308 |
| boolean | Valeur logique (booléen) | 1 | true (vrai), ou false (faux) |
Chacun des types primitifs peut être "enveloppé" dans un objet provenant d'une classe prévue à cet effet et appelée Wrapper (mot anglais signifiant enveloppeur). Les enveloppeurs sont donc des objets représentant un type primitif.
Avantages :
Voici la liste des enveloppeurs de chaque type primitif Java :
| Enveloppeur | Type primitif |
|---|---|
| Character | char |
| Byte | byte |
| Short | short |
| Integer | int |
| Long | long |
| Float | float |
| Double | double |
| Boolean | boolean |
Un nombre entier est un nombre sans virgule qui peut être exprimé dans différentes bases :
long n = 9876543210L;
Les entiers sont signés par défaut, cela signifie qu'ils comportent un signe. Pour stocker l'information concernant le signe (en binaire), les ordinateurs utilisent le complément à deux
Un nombre à virgule flottante est un nombre à virgule, il peut toutefois être représenté comme :
En réalité, les nombres réels sont des nombres à virgule flottante, c'est-à-dire un nombre dans lequel la position de la virgule n'est pas fixe, et est repérée par une partie de ses bits (appelée l'exposant), le reste des bits permettent de coder le nombre sans virgule (la mantisse).
Les nombres de type float sont codés sur 32 bits dont :
Les nombres de type double sont codés sur 64 bits dont :
La précision des nombres réels est approchée. Elle dépend du nombre de décimales, elle sera au moins :
float x = 2.F;
Le type char (provenant de l'anglais character) permet de stocker la valeur Unicode, codée sur 16 bits, d'un caractère, c'est-à-dire un nombre entier codé sur 16 bits, soit 65535 caractères !
Par conséquent il est possible de stocker un caractère accentué dans une variable de type char.
Si jamais on désire par exemple stocker la lettre B, on pourra définir cette donnée soit par son code Unicode '\u0066', soit en plaçant directement le caractères entre apostrophes 'B', on peut ainsi copier-coller un caractère Unicode et le mettre directement dans son code sans avoir à connaître sa valeur Unicode.
Les chaînes de caractères ne correspondent pas à un type de données mais à une classe, ce qui signifie qu'une chaîne de caractère est un objet possédant des attributs et des méthodes. Une chaîne peut donc être déclarée de la façon suivante :
String s = "Chaine de caractères";
On appelle conversion de type de données, parfois transtypage (traduction de l'anglais casting), le fait de modifier le type d'une donnée en une autre.
int n = 8; Integer m = n;
double x = 8.324; int n = (int) x;
Vous n'aimez pas le lifting de Facebook ? Le site Mashable propose cinq étapes pour revenir à l'ancienne présentation du réseau social.