|
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:
 
|