1
Les bases du langage Java
Les données
Les primitives
Les concepteurs de Java ont doté ce langage d’une série d’éléments particuliers appelés primitives. Ces éléments ressemble
à des objets, mais ne sont pas des objets ! Ils sont créés de façon différente, et sont également manipulés en mémoire de
façon différente. Cependant il peuvent être enveloppés dans des objets spécialement conçu à cet effet, et appelés
enveloppeurs (wrappers).
Table des primitives
primitive
étendue
taille
enveloppeur
char
0 à 65 535
16 bits
Character
byte
-128 à +127
8 bits
Byte
short
-32 768 à +32 767
16 bits
Short
int
- 2 147 483 648 à +2 147 483 647
32 bits
Integer
long
de 263 à +263-1
64 bits
Long
float
de
1.4E-45 à
3.40282347E38
32 bits
Float
double
de
4.9E-324 à
1.7976931348623157E308
64 bits
Double
boolean
true ou false
1 bit
Boolean
void
0 bit
Void
précision quelconque
BigInteger
précision quelconque
BigDecimal
Les classes BigInteger et BigDecimal sont utilisés pour représenter respectivement des valeurs entières et décimales de
précision quelconque. Il n’existe pas de primitives équivalente. Le type char sert à représenter les caractères, conformément
au standard UNICODE. Il est le seul type numérique non signé ! Remarquons que le type boolean n’est pas un type
numérique.
Initialisation des primitives
Les primitives doivent être déclarées et initialisées avant d’être utilisées. Une primitive non initialisée produira une erreur à
la compilation : « Variable may not have been initialized ».
Remarquons que les primitives, lorsqu’elles sont employée comme membre de classe, possède des valeurs par défaut. Il
n’est donc pas nécessaire de les initialiser !
primitive
valeur par
défaut
boolean
false
char
\u0000’ (null)
byte
(byte)0
short
(short)0
int
0
long
0L
float
0.0f
double
0.0d
2
Les valeurs littérales
primitive
syntaxe
char
‘x’
int
5 (décimal), 05 (octal), 0x5 (hexadécimal)
long
5L, 05L, 0x5L
float
5.5f ou 5f ou 5.5E5f
double
5.5 ou 5.5d ou 5.5E5d ou 5.5E5
boolean
false ou true
Casting sur les primitives
Les constantes
Java ne comporte pas de constantes à proprement parler. Il est cependant possible de simuler l’utilisation de constantes à
l’aide du mot clé final. Une variable déclarée final ne peut plus être modifiée une fois qu’elle a été initialisée.
Lorsqu’un élément est déclaré final, le compilateur est à même d’optimiser le code compilé afin d’améliorer sa vitesse
d’exécution.
Remarquons que les variables déclarées final peuvent être initialisées lors de l’exécution et non seulement lors de leur
déclaration !
Les chaînes de caractères
En Java, les chaînes de caractères sont des objets. Ce sont des instances de la classe String. Depuis les premiers langages de
programmation, les chaînes de caractères ont po des problèmes ! En effet, s’il est facile de définir différents types
numériques de format fixe, les chaînes de caractères ne peuvent pas être représentées dans un format fixe car leur longueur
peut varier de 0 à un nombre quelconque de caractères.
Java utilise une approche particulière. Les chaînes de caractères peuvent être initialisées à une valeur quelconque. Leur
longueur est choisie en fonction de leur valeur d’initialisation. En revanche, leur contenu ne peut plus être modifié. En effet,
la longueur des chaînes étant assurée de ne jamais varier, leur utilisation est très efficace en termes de performances.
Par ailleurs, il faut noter que Java dispose d’une autre classe, appelée StringBuffer, qui permet de gérer des chaînes
dynamiques. Remarquons qu’il est également possible de traiter des instances de la classe String comme des chaînes
dynamiques, sous certaines précautions.
Chaînes littérales
Les chaînes de caractères existent aussi sous forme littérale. Il suffit de placer la chaîne entre guillemets comme dans
l’exemple suivant :
"Bonjour maman !"
Les chaînes littérales peuvent contenir des caractères spéciaux issues du type char :
description
backspace
saut de page
saut de ligne
retour chariot
tabulation horizontale
\
"
caractère en code octal
caractère en code héxadécimal (unicode)
3
Opérateur d’affectation
symbole
description
arité
exemple
opérateur d’affectation
=
affectation
2
x = 2
=
soustraction et affectation
2
x= 2
+=
addition et affectation
2
x += 2
On dispose du raccourci : x = y = z = 2.
Opérateurs arithmétiques à deux opérandes
symbole
description
arité
exemple
opérateurs arithmétiques à deux
opérandes
soustraction
2
y x
*
multiplication
2
3 * x
/
division
2
4 / 2
%
modulo (reste de la division)
2
5 % 2
Il n’existe pas en Java d’opérateur d’exponentiation. Pour effectuer une exponentiation, il convient d’utiliser la fonction
pow(double a, double b) de la classe java.lang.Math.
La division des entiers fournit un résultat tronqué et non arrondi.
Opérateurs à un opérande
symbole
description
arité
exemple
opérateurs à un opérande
opposé
1
x
++
pré-incrémentation
1
++x
++
post-incrémentation
1
x++
--
pré-décrémentation
1
--x
--
post-décrémentation
1
x--
Opérateurs relationnels
symbole
description
arité
exemple
opérateurs relationnels
==
équivalent
2
x == 0
<
plus petit que
2
x < 2
>
plus grand que
2
x > 2
<=
plus petit ou égal
2
x <= 3
>=
plus grand ou égal
2
x >= 3
!=
non équivalent
2
a != b
Opérateurs logiques
symbole
description
arité
exemple
opérateurs logiques
&&
et
2
a && b
||
ou
2
a || b
!
non
1
!a
L’évaluation des expressions logiques est stoppées dès lors que le résultat est déterminé. L’évaluation partielle optimise le
code mais peut avoir des effets indésirables. Une manière de forcer l’évaluation consiste à utiliser les opérateurs
d’arithmétique binaire.
4
Opérateurs d’arithmétique binaire
Les opérateurs d’arithmétiques binaires agissent au niveau des bits de données, sans tenir comte de ce qu’ils représentent.
symbole
description
arité
exemple
opérateurs d’arithmétique binaire
&
et
2
a & b
|
ou
2
a | b
^
ou exclusif
2
a ^ b
~
non
1
~a
<<
décalage à gauche
2
a << 2
>>
décalage à droite
2
b >> 2
>>>
décalage à droite sans
extension du signe
2
b >>> 2
Rappelons que le bit de signe (des types entiers) est le bit de poids fort.
On peut utiliser les opérateurs d’arithmétique binaire avec des valeurs logiques, qui sont des valeurs sur 1 bit. L’intérêt de
cette possibilité est que, s’agissant d’opérateurs arithmétiques, ils sont toujours évalués.
L’opérateur à trois opérandes
symbole
description
arité
exemple
opérateur à trois opérandes
? :
condition ? vrai : faux
3
y < 5 ? 4 * y : 2 * y
Si condition est vrai, alors on retourne l’évaluation de l’expression vrai, sinon on retourne celle de faux.
Priorité des opérateurs
Les opérateurs par ordre de préséance décroissante sont les suivants :
Opérateurs
Ordre d’évaluation
Appel de méthode . [] () - +
De gauche à droite
++ -- ! ~ (cast) new
* / %
+ -
<< >> >>>
< > <= >=
== !=
&
^
|
&&
||
?:
= op=
,
5
Fichier Lecture.java
/*
* Lecture.java (MODE CONSOLE)
* Ce programme fait la lecture au clavier du nom et de l'âge de l'usager
* pour ensuite afficher ces informations
* Date : août 2003
*/
import java.io.*;
public class Lecture {
public static void main (String args[]) throws IOException{
int age;
String nom;
String ageLu;
BufferedReader clavier = new BufferedReader(
new InputStreamReader(System.in));
// LECTURE DES DONNÉES
System.out.print("\nVotre nom : ");
nom = clavier.readLine( );
System.out.print("\nVotre age : ");
ageLu = clavier.readLine( );
age = Integer.parseInt(ageLu);
// AFFICHAGE DES MESSAGES
System.out.println("\nBonjour! " + nom +
", vous êtes donc âgé(e) de "+ age + " ans ");
System.out.println("Puissiez-vous vivre encore longtemps!");
}
}
Résultats obtenus :
Votre nom : Marc_André
Votre age : 19
Bonjour! Marc_André, vous êtes donc âgé(e) de 19
ans
Puissiez-vous vivre encore longtemps!
Pour importer la librairie qui contient les classes
nécessaires à la lecture
Définition d’un tampon de lecture associé au
clavier
Lire la ligne de type String et la placer dans la
variable nom
Extraire l’entier de la ligne lue de type String et le
placer dans la variable age
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !