Les bases du langage Java

publicité
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
- 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
0 bit
Void
int
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
false
‘\u0000’ (null)
(byte)0
(short)0
0
0L
0.0f
0.0d
boolean
char
byte
short
int
long
float
double
1

Les valeurs littérales
primitive
char
int
long
float
double
boolean

syntaxe
‘x’
5 (décimal), 05 (octal), 0x5 (hexadécimal)
5L, 05L, 0x5L
5.5f ou 5f ou 5.5E5f
5.5 ou 5.5d ou 5.5E5d ou 5.5E5
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 posé 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 :
caractères spéciaux
\b
\f
\n
\r
\t
\\
\’
\"
\012
\uxxxx
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)
2

Opérateur d’affectation
opérateur d’affectation
symbole
=
–=
+=
description
affectation
soustraction et affectation
addition et affectation
arité
2
2
2
exemple
x=2
x–= 2
x += 2
arité
2
2
2
2
exemple
y–x
3*x
4/2
5%2
On dispose du raccourci : x = y = z = 2.

Opérateurs arithmétiques à deux opérandes
opérateurs arithmétiques à deux
opérandes
symbole
–
*
/
%
description
soustraction
multiplication
division
modulo (reste de la division)
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
opérateurs à un opérande

description
opposé
pré-incrémentation
post-incrémentation
pré-décrémentation
post-décrémentation
arité
1
1
1
1
1
exemple
–x
++x
x++
--x
x--
symbole
==
<
>
<=
>=
!=
description
équivalent
plus petit que
plus grand que
plus petit ou égal
plus grand ou égal
non équivalent
arité
2
2
2
2
2
2
exemple
x == 0
x<2
x>2
x <= 3
x >= 3
a != b
symbole
&&
||
!
description
et
ou
non
arité
2
2
1
exemple
a && b
a || b
!a
Opérateurs relationnels
opérateurs relationnels

symbole
–
++
++
---
Opérateurs logiques
opérateurs logiques
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.
3

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.
opérateurs d’arithmétique binaire
symbole
&
|
^
~
<<
>>
>>>
description
et
ou
ou exclusif
non
décalage à gauche
décalage à droite
décalage à droite sans
extension du signe
arité
2
2
2
1
2
2
exemple
a&b
a|b
a^ b
~a
a << 2
b >> 2
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
opérateur à trois opérandes
symbole
?:
description
condition ? vrai : faux
arité
3
exemple
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 :
Ordre d’évaluation
De gauche à droite
Opérateurs
Appel de méthode . [] () - +
++ -- ! ~ (cast) new
*/%
+<< >> >>>
< > <= >=
== !=
&
^
|
&&
||
?:
= op=
,
4
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
Pour importer la librairie qui contient les classes
*/
nécessaires à la lecture
import java.io.*;
public class Lecture {
public static void main (String args[]) throws IOException{
int age;
String nom;
String ageLu;
Définition d’un tampon de lecture associé au
clavier
BufferedReader clavier = new BufferedReader(
new InputStreamReader(System.in));
// LECTURE DES DONNÉES
System.out.print("\nVotre nom : ");
nom = clavier.readLine( );
Lire la ligne de type String et la placer dans la
variable nom
System.out.print("\nVotre age : ");
ageLu = clavier.readLine( );
Extraire l’entier de la ligne lue de type String et le
placer dans la variable age
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!
5
Téléchargement