Java est un langage orienté objet, c'est-à-dire
que les éléments manipulés sont des classes, ou plus
exactement des objets, c'est-à-dire des instances de classes.
Toutefois ces objets contiennent des données possèdant un type (et une représentation).
Ces données sont un ensemble d'éléments stockés en mémoire et
baptisés pour l'occasion primitives.
Les données manipulées avec Java, sont typées, c'est-à-dire
que pour chaque donnée que l'on utilise (dans les variables par exemple)
il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire
(le nombre d'octets) de la donnée ainsi que sa représentation, cela peut être entre autres:
- des nombres entiers: (int)
- réels, c'est-à-dire à virgules (float)
De plus, le langage Java introduit un type de donnée appelée boolean.
Ce type de variable accepte deux états:
- True (vrai): correspondant à une valeur vraie
- False (faux): correspondant à une valeur fausse
En réalité, toutes
les valeurs différentes de True sont considérées comme fausses (donc considérées
comme égales à False). Si la variable n'est pas initialisée, sa valeur par défaut est False.
Voici un tableau répertoriant les primitives (types de données) de Java:
Primitive |
Signification |
Taille (en octets) |
Plage de valeurs acceptée |
char | Caractère | 2 | valeur du jeu de caractères Unicode (65000 caractères possibles) |
byte | Entier très court | 1 | -128 à 127 |
short | Entier court | 2 | -32768 à 32767 |
int | Entier | 4 | -2 147 483 648 à 2 147 483 647 |
long | Entier long | 8 | -9223372036854775808 à 9223372036854775807 |
float | flottant (réel) | 4 | -1.4*10-45 à 3.4*1038 |
double | flottant double | 8 | 4.9*10-324 à 1.7*10308 |
boolean | booléen | 1 | 0 ou 1 (en réalité, toute autre valeur que 0 est considérée égale à 1) |
Les primitives peuvent être "enveloppées" 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 pouvant contenir
une primitive et auxquels sont associés des méthodes permettant de les manipuler.
Voici la liste des enveloppeurs disponibles avec Java:
Enveloppeur |
Primitive associée |
BigDecimal |
aucune primitive associée, car cette classe peut contenir des valeurs décimales de précision quelconque |
BigInteger |
aucune primitive associée, car cette classe peut contenir des valeurs entières de précision quelconque |
Character |
char |
Byte |
byte |
Short |
short |
Integer |
int |
Long |
long |
Float |
float |
Double |
double |
Boolean |
boolean |
Void |
void |
Un nombre entier est un nombre sans virgule qui peut être exprimé dans
différentes bases:
- Base décimale: L'entier est représenté par une suite de chiffre unitaires (de 0 à 9)
ne devant pas commencer par le chiffre 0
- Base hexadécimale: L'entier est représenté par une suite d'unités (de 0 à 9 ou de A à F (ou a à f))
devant commencer par 0x ou 0X
- Base octale: L'entier est représenté par une suite d'unités (incluant uniquement des chiffres de 0 à 7)
devant commencer par 0
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é de différentes façons:
- un entier décimal: 895
- un nombre comportant un point (et non une virgule): 845.32
- une fraction: 27/11
- un nombre exponentiel, c'est-à-dire un nombre (éventuellement à virgule)
suivi de la lettre e (ou E), puis d'un entier correspondant à la puissance de 10
(signé ou non, c'est-à-dire précédé d'un + ou d'un -)
2.75e-2
35.8E+10
.25e-2
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:
- 23 bits pour la mantisse
- 8 bits pour l'exposant
- 1 bit pour le signe
Les nombres de type double sont codés sur 64 bits dont:
- 52 bits pour la mantisse
- 11 bits pour l'exposant
- 1 bit pour le signe
La précision des nombres réels est approchée. Elle dépend
par le nombre de positions décimales, suivant le type de réel elle sera au moins:
- de 6 chiffres après la virgule pour le type float
- de 15 chiffres après la virgule pour le type double
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 65000 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 notant 'B' ou les apostrophes
simples signifient code ascii de...
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. Il peut arriver par exemple que l'on veuille travailler
sur un type de variable, puis l'utiliser sous un autre type. Imaginons que l'on travaille
par exemple sur une variable en virgule flottante (type float), il se peut que l'on
veuille "supprimer les chiffres après la virgule", c'est-à-dire
convertir un float en int. Cette opération peut être réalisée
de deux manières:
|