Chap2 - Elements de Base

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 15

Chapitre 2: Eléments de base du langage java

Chapitre 2:

Éléments de base du langage Java

La syntaxe de java est inspirée du langage C/C++.

1. Commentaires

Pour des raisons de lisibilité, il est toujours commode d'ajouter des commentaires au code source d'un
programme. Trois notations sont admises:
// commentaire sur une ligne
/* commentaires
sur plusieurs lignes
*/

A partir du commentaire on peut générer automatiquement la documentation sous forme de pages web
/** commentaire utilisé pour javadoc pour la génération automatique
de la documentation*/

2. Blocs

Un bloc commence par {et fini par}

3. Identificateurs

Un identificateur (nom de variables, classes, constante, package) commence par une lettre, trait de
soulignement _, ou un dollar $.

Java fait la différence entre majuscule et minuscule.

4. Mots réservés
abstract Default if package throw
boolean do implements private trows
break Double import protected tansient
byte Else instanceof public true
case Extends int return try
catch False interface short void
char Final long static volatile
class Finally multicast super while
continue Float native switch enum
const For new synchronized
delegate Goto null this
5. Types primitifs
Le langage java est fortement typé. Pas de conversions implicites s'il y a une perte d'information.
Par exemple, du type int vers type double.
Type booléen: permet de représenter deux valeurs true ou false.
Exemple:
boolean trouve;

Page 1 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

trouve=1;//un booléen n'est pas un entier. Erreur de


compilation
trouve=true;//instruction correcte
a. Type caractère: un caractère est Unicode (UTF-16) représenté en java sur 2 octets. Un
caractère s'écrit entre apostrophes. peut-être casté (transtypé) en un entier.
Exemple:
'‫ 'ق‬désigne le caractère ‫ق‬
'\u0633' un caractère Unicode représentant le caractère arabe sīn (‫)س‬
int x='a';//x contient le code Unicode du caractère a.

b. Types entiers: les quatre types entier en Java sont: byte, short, int et long. Ils sont des
entiers signés mais qui diffèrent par la taille mémoire occupée et la plage de valeurs qu'ils
puissent représenter:
type taille mémoire intervalle
byte 1 octet [-128..127]
short 2 octet -215..215-1
int 4 octet -231..231-1
long 8 octet -263..263-1
19 est une valeur de type int alors que 19L est un entier long

c. Types réels: déclaré comme float ou double. Si une valeur contient une décimale elle est
considérée comme double sinon c'est un float.
Exemple:
2.0 est un double
2.0F est un float
2.0E4 égale 20000
d. Type référence: Est un type destiné à contenir une adresse d'objet ou tableau. Il rappelle
les pointeurs. Si une variable de type référence possède la valeur null, cela veut dire
qu'elle ne pointe rien.
6. Les constantes
Pour déclarer une constante on utilise le mot clé final. Par convention, les constantes sont en
toutes majuscules.
Exemple:
Pour déclarer la constante réelle π, on écrira: final double PI=3.14;
Une constante en java peut être initialisée seulement lors de la déclaration ou dans le constructeur.
Une constante ne peut être initialisée qu'une seule fois au cours de traitement.

7. Variables, déclarations et affectation


pour déclarer une variable la syntaxe est similaire à celle en C/C++.
Exemple:
int x=0,y;
char c='a';

8. Conversion de types
Si dans une expression les opérandes sont de types différents, le résultat est converti vers le type le
plus grand (large). Les types doivent être compatibles:

Page 2 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

Exemple:
int x=2;
long z,y=4;
z=x*y;// le résultat est converti en long

Lors d'une affectation la valeur affectée est convertit au type de la variable à gauche:
Exemple:
int i=2;
long x=5;
x=i;//instruction légale
i=x;//instruction illégale

char c='s';

int a=c+1;

Pour convertir explicitement (cast) une expression, on utilisera la syntaxe suivante:


<nom_variable>=(<type>)<expression>;
Exemple:
float z=(float)14.33;

14.33 est un double qui doit être converti explicitement en float.


int x=(int)z;// x contiendra la valeur 14

9. Fonctions mathématiques
fonction java description exemple résultat (double)
Math.ceil(double x) l'entier suivant du réel Math.ceil(5.5) 6.0
Math.floor(double x) l'entier précédent du réel Math.floor(5.5) 5.0
Math.round(double x) l'entier le plus proche au réel Math.round(5.5) 6.0
Math.random() valeur aléatoire dans l'intervalle [ 0..1.0[ Math.random() imprévisible

10. Les classes Wrapper


Chaque type primitif lui correspond une classe Wrapper (enveloppe). Chaque classe contient les
méthodes (opérations) propres à ce type tel que la conversion. Ces classes rendent les variables de
types primitifs des objets au sens orienté objet.
classe enveloppe
Type primitif
(Wrapper)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
11. Le type String
Une chaine de caractères est un objet de type String (de la classe java.lang.String).

Page 3 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

a. Concaténation des chaînes de caractères


On définit dans la classe String l'opérateur + pour la concaténation. La concaténation de 2 chaînes
de caractères permet de créer une 3ème contenant les 2 chaînes.

Il est possible de concaténer une chaîne avec un autre type de données : entier, réel, Caractère,
Booléen, Objet. String S="bonjour"+2014;

b. Créer et utiliser des objets de la classe String


Le programme suivant illustre l’utilisation d’un objet de type String :

public class MaChaine{

public static void main(String args[])

{String ch1=new String("Bonjour");

System.out.println(ch1);

String ch2="Tout le Monde";

System.out.println(ch2);

String ch3=ch1+ch2;

System.out.println(ch3);

}}

On aura à l’écran :

Bonjour
Tout le Monde
BonjourTout le Monde
c. Méthodes usuelles : taille et extraction
i. Taille d’une chaine de caractère
Pour connaître la taille d’un chaine de caractère, on utilise la méthode length() qui retourne le
nombre de caractères d’un objet de type String :

Les deux écritures suivantes sont équivalentes:

System.out.println("Bonjour".length()) ;

Ou

s="Bonjour";

System.out.println(s.length()) ;

Et donnent le même résultat à l’écran : 7

ii. Extraction d’un caractère

Page 4 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

la méthodes charAt(int pos) retourne le caractère qui se trouve à la position pos dans une chaine
de caractères. La première position sera 0. Exemple :

s="Bonjour";

char c=s.charAt(0);

System.out.println(c) ;

Affiche à l’écran

Remarque: l'écriture suivante s[i] n'est plus valable en java. Une chaine en java n'est pas un tableau de
caractères.

iii. Extraction d’une sous-chaine


Deux méthodes substring retournent une nouvelle chaîne:

substring(int pos): Renvoie une nouvelle chaine formée par tous les caractères
d’une autre chaine à partir d’une position pos jusqu'à la fin de la chaine.

substring(int iDebut,int iFin) : Renvoie une nouvelle chaine formée par


tous les caractères d’une autre chaine à partir d’une certaine position iDebut jusqu’à
une position iFin-1.

Exemple

String s1="Bonjour";

String s2=s1.substring(1,3);
s2=on
System.out.println("s2="+s2);
Affiche sur écran s2=our
s2=s1.substring(4);
1.
System.out.println("s2="+s2);
3.
iv. Comparer les chaînes de caractères
Pour comparer 2 chaines, on utilise la fonction equals de la classe String. La comparaison avec
l’opérateur == vérifie est ce que les deux chaînes référencient le même objet. La fonction
equalsIgnoreCase permet de comparer deux chaines sans tenir compte de la casse (sans distinguer
majuscule/minuscule) :
true
String s1=new String("Bonjour");
false
System.out.println(s1.equals("Bonjour"));
Affiche sur écran
System.out.println(s1=="Bonjour");
6.
Page 5 Prof. Sami GHARBI
Chapitre 2: Eléments de base du langage java

v. Comparer deux chaînes: ordre


 public int compareTo(String s);retourne une valeur négative(resp. positive)
si la chaîne concernée est avant(resp. après) s dans l'ordre lexicographique (comme dans
un dictionnaire), 0 si la chaînes concernée est égale à s.
Exemple:

String ch=new String("bonjour");

int l=ch.length();

System.out.println(ch.compareTo("lundi"));

Affiche à l'écran -10 Puisque "bonjour" est avant "lundi" dans l'ordre lexicographique.

vi. Chercher une chaîne dans une autre


Deux méthodes sont proposées pour la recherche:

 indexOf(String s) ou indexOf(char c): permet de chercher la première


occurrence (position) de la chaine s ( ou le caractère c).
 lastIndexOf (String s) ou lastIndexOf(char c): permet de chercher la
dernière occurrence (position) de la chaine s ( ou le caractère c).
Exemple :

String s1="Bonjour";
3
int n=s1.indexOf("j");
System.out.println(n); 1
Affiche sur écran
n=s1.indexOf("o"); 4
9.
System.out.println(n);
n=s1.lastIndexOf("o");
System.out.println(n);

vii. Conversion d’un type simple vers une chaîne


Pour convertir n’importe quelle variable de n’importe quel type simple (int, float, double, long, boolean,
char[]) on appelle la méthode statique :

String.valueOf (<variable>)
Qui retourne une chaîne de caractères équivalente à la valeur de la variable passée en paramètre :
double d=12.0 ;

String s=String.valueOf(d) ;

Crée une chaine s contenant "12.0"

viii. Conversion d'une chaîne en un type simple

Page 6 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

Conversion Exemple

Stringint String s="189";


int a=Integer.parseInt(s);

Stringfloat String s="18.78";


float a=Float.parseFloat(s);

Stringdouble String s="23.5";


double a=Double.parseDouble(s);

Stringboolean String s="true";


boolean a=Boolean.parseBoolean(s);

12. La classe StringBuilder


Une fois une chaine String est créée, il n’est pas possible de la modifier. Pour cela on utilisera une
chaine tampon de la classe StringBuilder qui permet de manipuler dynamiquement une chaine de
caractères.

 Spécifier la taille du tampon : setLength(int taille)


 Insérer un élément de type simple dans la chaine à une certaine position : insert(int
position, char c)
 Supprimer des caractères: delete(int debut,int fin) pour supprimer des caractères de
la position de début jusqu'à fin-1.
 Ajouter un élément à la fin de la chaîne append(char c)
 Convertir le tampon en une chaine : toString()

13. Les tableaux


1. Définir un tableau:
1. Première méthode
char [] T;
On déclare une référence vers un tableau de caractères. Néanmoins, aucun espace mémoire n'est alloué.
char T[];
Pour allouer l'espace mémoire on utilisera le mot-clé new, en précisant le nombre de cases du tableau:
T=new char[7];
Le nombre de cases peut être issu d'une variable.
Exemple:
int N=4;
T=new char[N];
Comme en C la numérotation des cases commence par 0. D’où la dernière case aura l'indice égal à la taille
du tableau -1.
Soit l'exemple suivant:
class TestTableau{

Page 7 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

public static void main(String args[]){


char []T;
T=new char[4];
T[0]='j';
T[3]='a';
T[2]='v';
T[1]='a';
System.out.println(T);
}
}
On aura à l'exécution:
java

Explications:
 char []T: crée une référence vers un tableau de caractères.
 T=new char[4]: allocation de la mémoire pour 4 caractères référencés par la variable T.
Toutes les cases du tableau sont initialisées avec le caractère de valeur nulle ( '\0' ).
 System.out.println(T);:cette instruction permet d'afficher les éléments d'un
tableau(valable seulement pour un tableau de caractères sinon on utilise une boucle).

Une deuxième méthode: déclaration, création et initialisation


On peut créer un tableau en y insérant les éléments, soit l'exemple suivant:
class TestTableau2{
public static void main(String args[]){
boolean []T={true,false,true};
System.out.println("le deuxième élément est: " + T[1]);
}
}
On aura à l'exécution: le deuxième élément est: false

2. Longueur
On peut connaître à l'exécution la taille d'un tableau. Si la référence tab désigne un tableau, on pourra
écrire: tab.length .En quelque sorte length est un attribut du tableau. Cet attribut est en lecture
seule: on ne peut pas le modifier.

3. Tableaux à plusieurs dimensions


Il est possible de créer des tableaux à 1, 2, …n dimensions. Soit la déclaration suivante:
int tableau[][]=new int[6][8];

Permet de créer un tableau à deux dimensions: Matrice. Elle contient 6 lignes et 8 colonnes.
Il est encore possible en java de créer un tableau de différentes dimensions. Soit la déclaration suivante:
int M[][]=new int[3][];

Page 8 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

Remarquez que la deuxième taille (dimension) n'est pas précisée.

M[0]=new int[4];
0 0 0 0
M[1]=new int[2];
0 0
M[2]=new int[5];
0 0 0 0 0
Le tableau est formé par 3 lignes. La 1ère ligne contient 4 colonnes (cases), la 2ème contient 2
colonnes et la 3ème contient 5 colonnes. Ce qui donne le tableau suivant initialisé à des 0.

14. Structures alternatives


 if….else
if(<expression booléenne>)
{
//bloc à exécuter si l'expression booléenne est évaluée à vrai
}
else // bloc facultatif
{
//bloc à exécuter si l'expression booléenne est évaluée à faux
}
 if-then-else
<variable>=<expression booléenne>? <valeur1>:<valeur2>;
 switch
switch(<expression>)//expression de type(int,byte,short,long,String)
{
case <valeur_1>:
<bloc_1>
break;//pour rompre le test
case <valeur_2>:
<bloc_2>
break;
…………
case <valeur_n>:
<bloc_n>
break;
default:
<bloc_n+1>
}

15. Structures itératives


 structure for:
for(<initialisations>;<expression_booléenne>;<incrémentations>)

Page 9 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

{
//bloc d'instructions à exécuter tant que l'expression booléenne est vraie
}
 structure foreach
Appelée aussi for améliorée (enhanced for). Utilisée pour parcourir une collection d'objets (tableau ou
collection java).
for(<type><identificateur>:<collection>)
{
//bloc d'instructions à exécuter jusqu'à la fin de la collection
}
Exemple: soit un tableau T d'entiers. Pour calculer la somme de ses
elements:
int S=0;
for(int a:T){
S+=a;
}
 Structure while
while(<expression_booléenne>)
{
//bloc d'instructions à exécuter tant que l'expression booléenne est vraie
}
 Structure do….while
do
{
//bloc d'instructions à exécuter tant que l'expression booléenne est vraie
} while(<expression_booléenne>);

16. Les structures simples


a. La lecture interactive des données
Pour lire une information à partir du clavier (appelée en java System.in), on doit créer un objet de la
classe Scanner (du package java.util). Avec cet objet, on peut lire des entiers, des réels, des booléens, des
caractères et des chaines. Chaque type lui correspond une méthode (fonction) de lecture.
Exemple:
//création d'un objet Scanner ayant la référence S
Scanner S=new Scanner(System.in);
int x=S.nextInt();
float f=S.nextFloat();
double d=S.nextDouble();
boolean b=S.nextBoolean();
char c=S.nextCharacter();
String ch=S.next();//saisi d'une chaine de caractères

Page 10 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

b. Affichage des données


La classe System contient une méthode (procédure) println qui permet d'afficher des informations suivi
par un retour à la ligne (print sans retour à la ligne). La méthode println accepte un seul paramètre, d’où il
faut concaténer les informations avec l'opérateur +.

Exemples:

double y=13;
System.out.println("le résultat="+y);le résultat=13
System.out.println("le résultat="+y+1); le résultat=131
+ est un opérateur de concaténation des 3 paramètres
System.out.println("le résultat="+(y+1)); le résultat=14
+ est un opérateur de somme dans y+1 et concaténation avec la chaine.

c. Paramètres d'exécution
Il est possible au moment de l'exécution d'introduire des données sous forme de paramètres (arguments).
Ces paramètres sont récupérés dans un tableau de chaines de caractères par la méthode main.

Exemple:

class Test{
public static void main(String[]args){
for(int i=0;i<args.length;i++){
System.out.println("paramètre N° "+i+"="+args[i]);
}
}
}

Lors de l'exécution

Pour exécuter on doit appeler la JVM (java) pour lui renseigner la classe qui contient main suivie par les
arguments:

java Test bonjour tout le monde


Le résultat obtenu sur écran:
paramètre N° 0 bonjour
paramètre N° 1 tout
paramètre N° 2 le
paramètre N° 3 monde

Page 11 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

Questions de cours
1. Lesquels de ces instructions sont correctes :
a. int x=10;
b. double a=10;
c. int a;
double x;
a=x;
d. float x=10.5;
e. char c=23;
f. boolean b=0;
g. int a='a';
h. double x=10.7;
i. float z=10.7d;
j. float a=10.7F;
k. float f=(float)10.7;
l. boolean b=True;
m. boolean b=1= =2;
n. char c="a";
2. Quelle est la valeur de x après cette instruction int x=12==5?10:40;
a. false
b. 10
c. 40
d. 0
e. Erreur de syntaxe
3. un caractère en java
a. est codé en ASCII
b. est codé en UNICODE
c. est un objet
d. est comparable
e. peut être utilisé comme entier
f. peut-être une lettre arabe
4. soit l'instruction Voiture V1. Lesquelles parmi les affirmations suivantes sont correctes :
a. V1 est une référence d'objet
b. V1 a la valeur null
c. Cette instruction est incorrecte

Page 12 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

d. Voiture est un objet


e. Voiture est une classe
5. l'expression Math.ceil(-5.5) donne:
a. -5
b. -4
c. -6
d. Erreur de syntaxe
e. Erreur à l'exécution
6. soit le code suivant:

char c='a';
switch(c){
case 'a': System.out.print("ok");
case 'b': System.out.print("nok");
}

Qu'Affiche-t-il?

a. oknok
b. ok
c. nok
7. soit le code suivant:

int z=0;

int x=z++;

System.out.println("x="+x+"\tz="+z);

Qu'Affiche-t-il?

a. x=0 z=1
b. x=1 z=1
c. erreur de syntaxe
d. erreur d'exécution
8. comment déclarer une constante x de valeur 10
a. const x=10;
b. const int x=10;
c. constant x=10;
d. constant int x=10;
e. final x=10;
f. final int x=10;

Page 13 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

g. define x=10;
9. Les classes Wrapper permettent de:
a. Définir les opérations propres à chaque type primitif
b. Gérer les erreurs du programme java
c. Utiliser les variables primitifs comme des objets
d. créer des bibliothèques mathématiques
10. Pour comparer le contenu de deux chaines :
a. On utilise la méthode equals de l'un des deux
b. On utilise la méthode equals de la classe System
c. On utilise l'opérateur = =
d. On utilise la méthode compareTo
e. On crée une méthode (fonction) de comparaison
11. Lesquelles parmi ces instructions sont correctes :
a. String S="java";
println(S.length());
b. String S=new String("java");
c. int taille="java".length();
d. String k="java"+12;
e. System.out.println("java",2015);
12. Pour extraire gramme de la chaine ch qui contient programme on doit écrire :
a. String h=ch.substring(3)
b. String h=ch.susbstring(3,8)
c. String h=ch.substring(3,9)
d. String h=substring(ch,3,6)

Page 14 Prof. Sami GHARBI


Chapitre 2: Eléments de base du langage java

Exercices
Exercice 1:
Traduire l'algorithme suivant en java:
Algorithme surface
Const
Pi=3.141592
Var
S,P,R:réel
Debut
Ecrire ("donner le rayon:");
Lire (R)
p2*pi*R
spi*R*R
ecrire("le perimetre=",p)
ecrire("la surafce=",s)
Fin
Exercice 2 :
Créer un programme qui calcule la somme, la moyenne, et le maximum d’entiers saisis.
Proposez 3 solutions :
 En utilisant le tableau d'arguments de la méthode main
 En utilisant votre tableau
Exercice 3 :

Créer un programme qui compte le nombre de voyelles dans une chaine de caractères.

Exercice 4 :

Créer un programme qui sépare les valeurs d'une adresse IP. Puis affiche la classe de l'adresse.

Exercice 5 :
Créer un programme qui remplace un caractère par un autre dans une phrase. Les données sont saisies au
clavier.
Exercice 6 :

Créer un programme qui découpe une phrase en mettant chaque mot dans une case de tableau. On
suppose que chaque deux mots sont séparés par un seul espace. Utilisez la structure for améliorée (for
each).

Page 15 Prof. Sami GHARBI

Vous aimerez peut-être aussi