0% ont trouvé ce document utile (0 vote)
4 vues61 pages

Introduction à la POO en Java

Transféré par

salma.labidi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues61 pages

Introduction à la POO en Java

Transféré par

salma.labidi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation Orientée Objet

POO : Java

JAVA

Sofiane HACHICHA

[Link]@[Link]

Sofiane HACHICHA
CPI2
ISIMG 2025 - 2026 2025/2026 1
Chapitre
POO : Java

3
Syntaxe et éléments de base
de Java
Sofiane HACHICHA
ISIMG 2025 - 2026
64
3- Les bases du langage
3.1 Les commentaires (1/5)

Tout programme (grand ou petit, simple ou complexe)


contient (ou devrait contenir) des commentaires.
POO : Java

Les commentaires ont pour but d'expliquer :


Ce que le programme est censé faire,
Les conventions adoptées,
Toute autre information rendant le programme lisible
pour soi-même et surtout pour autrui.

Java dispose de trois types de commentaires :


Les commentaires mono-ligne,
Les commentaires multi-lignes,

Sofiane HACHICHA
Les commentaires pour documentation.
ISIMG 2025 - 2026
65
3- Les bases du langage
3.1 Les commentaires (2/5)

Commentaires mono-ligne :
POO : Java

Les commentaires mono-ligne débutent avec les


symboles ''//'' et qui se terminent à la fin de la ligne.

// Ce programme imprime la chaîne


// de caractères " bonjour " à l'écran
...

Ils représentent des commentaires courts qui tiennent


sur une seule ligne.

Sofiane HACHICHA
ISIMG 2025 - 2026
66
3- Les bases du langage
3.1 Les commentaires (3/5)

Commentaires multi-lignes :
POO : Java

Un commentaire multi-ligne commence par les


caractères ''/*'' et se termine par ''*/''.

/* Ce programme imprime la chaîne


de caractères "bonjour" à l'écran
*/

A l'intérieur de ces délimiteurs, toute suite de


caractères est valide (sauf évidemment ''*/'').

Sofiane HACHICHA
ISIMG 2025 - 2026
67
3- Les bases du langage
3.1 Les commentaires (4/5)

Commentaires pour documentation :

Ces commentaires, appelés aussi commentaires


POO : Java

Javadoc, servent à documenter les classes que l'on


définit.

Ces commentaires sont encadrés entre ''/**'' et ''*/''


/**
* Documentation de la classe.
*/
Java exige que ces commentaires figurent avant la
définition de la classe ou d'un membre de la classe
qu'ils documentent.

Ces commentaires servent à générer une


Sofiane HACHICHA
ISIMG 2025 - 2026
documentation officielle sous forme de pages HTML
à l'aide de l'outil Javadoc. 68
3- Les bases du langage
3.1 Les commentaires (5/5)

Commentaires pour documentation :

Java 23 nous offre la possibilité d'écrire la Javadoc en


POO : Java

Markdown pour sa mise en forme.


Pour rester compatible avec les anciennes Javadoc, on utilisera
un triple slash pour spécifier une ligne de Javadoc.

/**
* Classe test
/// Classe test
* <p>
///
* Un premier exemple :
/// Un premier exemple :
* <ul>
/// - simple
* <li>simple
/// - complet
* <li>complet
* </ul>
*/
Sofiane HACHICHA
ISIMG 2025 - 2026
69
3- Les bases du langage
3.2 Variables

Le langage Java est un langage fortement typé :

Il faut préciser le type de chaque variable


POO : Java

Une variable peut avoir plusieurs valeurs différentes


mais ne peut pas changer de type.

Deux modes de typage en Java

Statique : le type est précisé à la déclaration de la


variable.

Dynamique : la variable est déclarée avec le mot-clé


var et son type est dynamiquement déterminé à partir
de la valeur initiale (ce mode est disponible depuis
Java 11).
Sofiane HACHICHA
ISIMG 2025 - 2026
70
3- Les bases du langage
3.3 Typage dynamique des variables

Déclarer une variable locale avec le mot-clé var

var nomVariable = valeurInitiale;


POO : Java

Une variable locale déclarée avec le mot-clé var

doit être initialisée : la déclaration et l’initialisation


doivent être faites en même temps.

a un type déterminé en fonction de sa valeur initiale

ne peut pas changer de type

Exemple :

var x = 1;
Sofiane HACHICHA
ISIMG 2025 - 2026 x = "test"; // Ceci génère une erreur à la compilation
71
3- Les bases du langage
3.4 Typage statique des variables

Déclarer une variable

type nomVariable;
POO : Java

Deux choix possibles pour typer les variables en Java

Types primitifs : ils commencent par une lettre en


minuscule.
Exemple : Les types numériques, le type booléen et le type
caractère.

Types objets (ou références) : ils commencent par


une lettre majuscule.

Sofiane HACHICHA
ISIMG 2025 - 2026
72
3- Les bases du langage
3.4.1 Les types primitifs numériques (1/4)

Les types numériques entiers


byte short int long
POO : Java

Taille en bits 8 16 32 64
Etendue -128 -32768
… … -231 … 231-1 -263 … 263-1
127 32767

Le bit est utilisé pour décrire les tailles.


Un bit ne peut prendre que deux valeurs (0 ou 1).
n bits ne peuvent définir que 2n valeurs.
Un octet ou byte en anglais = 8 bits.
Un octet peut donc contenir 28 (soit 256) valeurs
distinctes.

Sofiane HACHICHA
ISIMG 2025 - 2026
73
3- Les bases du langage
3.4.1 Les types primitifs numériques (2/4)

Les types numériques flottants


POO : Java

De même que pour les types numériques entiers, il existe deux


types pour les nombres flottants :
float,
double.

la seule différence réside dans la taille utilisée pour stocker une


valeur de ce type.

float double
Taille en bits 32 64
Exemple de 3.25f 3.25
valeur

Sofiane HACHICHA
ISIMG 2025 - 2026
74
3- Les bases du langage
3.4.1 Les types primitifs numériques (3/4)

Depuis Java 7, il est possible de formater une variable de type


numérique en utilisant le caractère '_' : pratique pour
améliorer la lisibilité des grands nombres.
POO : Java

int entier = 32_000;


float pi = 3.14_15f;
double monDouble = 123_567_891;
Le caractère '_' doit être placé entre deux caractères
numériques : il ne peut pas être utilisé au début ou à la fin
d’une déclaration, ni avant ni après un séparateur de décimal.
Ainsi, les déclarations suivantes ne sont pas valides :
double d = 123_.159;
int entier = _123;
int entier2 = 123_;
Depuis Java 22, il est possible d’utiliser le caractère '_' pour
Sofiane HACHICHA
déclarer des variables anonymes. C'est parfois utile quand la
ISIMG 2025 - 2026 déclaration de variable est obligatoire, mais que la variable
75
est inutile.
3- Les bases du langage
3.4.1 Les types primitifs numériques (4/4)

Il est permis de déclarer des variables numériques :


en octal , en utilisant le préfixe « 0 » :
int entier = 255; //Peut s'écrire « int entier = 0377; »
POO : Java

int entier = 20; //Peut s'écrire « int entier = 024; »


en hexadécimal, en utilisant le préfixe « 0x » :
int entier = 255; //Peut s'écrire « int entier = 0xFF; »
int entier = 20; //Peut s'écrire « int entier = 0x14; »

Depuis Java 7, il est possible d'utiliser la notation binaire, en


utilisant le préfixe « 0b » :
int entier = 0b1111_1111; //Peut s'écrire int entier = 255;
int entier = 0b1000_0000_0000; //… int entier = 2048;
int entier = 0b100000000000; //… int entier = 2048;
Sofiane HACHICHA
ISIMG 2025 - 2026
76
3- Les bases du langage
3.4.2 Le type primitif booléen

Ce type est introduit en Java par le mot-clé boolean.

Ce type est un vrai type booléen


POO : Java

il accepte seulement deux états :


l'un est nommé true :
Symbolise un état d'acceptation,
l'autre est nommé false,
Symbolise un état de réfutation.

Attention, contrairement du langage C, le type booléen en


Java n'est pas un sous-type numérique :
En C par exemple , la valeur 0 est considérée comme
fausse et les autres valeurs entières comme vraies.
Sofiane HACHICHA
ISIMG 2025 - 2026
77
3- Les bases du langage
3.4.3 Le type primitif caractère

Ce type, introduit par le mot-clé char, permet la gestion


des caractères.

Le codage ASCII utilise 8 bits et permet de représenter


POO : Java

seulement 128 caractères.

Java utilise le codage de caractères universel Unicode qui


est une extension du codage ASCII.

Java utilise UTF-16 : un encodage Unicode qui


représente chaque caractère en utilisant 16 bits.

Les variables de type char sont codées sur 2 octets non


signés . Elles ont des valeurs allant de 0 à 216 - 1.
char car = 'a';

Sofiane HACHICHA
char x =97; // 97 est le code caractère de la lettre a en UTF-16
ISIMG 2025 - 2026
78
3- Les bases du langage
3.4.4 Les types objets (1/2)

Tout type non primitif, est un type objet.

Le rôle d’un type objet est de référencer une zone


POO : Java

mémoire.

Un type objet a un rôle analogue à celui des pointeurs du


langage C .

Les enveloppes (Wrapper classes) de types primitifs sont


des types objets en Java.
Byte pour byte, Short pour short, Long pour long,
Integer pour int, Float pour float, Double pour
double, Boolean pour boolean et Character pour
char.
Une variable de type tableau est une référence vers un
objet tableau.
Sofiane HACHICHA Il existe plusieurs autres types objets : String, Date, etc.
ISIMG 2025 - 2026
79
3- Les bases du langage
3.4.4 Les types objets (2/2)

l’API Java fournit des classes enveloppes qui permettent


d’envelopper la valeur d’un type primitif.
Créer une instance d’un Wrapper soit en utilisant :
POO : Java

son constructeur (@Deprecated(since="9", forRemoval=true))


la méthode de classe valueOf (méthode recommandée).
Integer i = [Link](2);
Pour obtenir la valeur enveloppée, on fait appel à la
méthode xxxValue(), xxx étant le type sous-jacent
int x = [Link]();
Les classes enveloppes (sauf Character) définissent
une méthode de classe de la forme parseXXX pour
convertir une chaîne de caractères en un type primitif
(inversement valueOf(x).toString() ou toString(x))
int val = [Link]("1");
Sofiane HACHICHA Une variable de type d’une des classes enveloppes peut avoir la
ISIMG 2025 - 2026 valeur null. Ce cas signifie l’absence de valeur. 80
3- Les bases du langage
3.4.5 Déclaration et initialisation des variables
Exemples
int nbredeMois = 12 ; int nbreDeMois = 4*3 ;
int nbrDeDoigts = 012 ; int annee = 0x7E8;
POO : Java

boolean test = false ; char unCaractere = 'c' ;


float solde = 1.3f ; float salaire = 1.5e+3f ;
double unDouble = 1.3 ; double nbreDouble = 5.8d ;
byte b = [Link]("100"); long q = 100_000_000_000l;
float xd = [Link]("4f");
Long l = new Long(5); Long y = [Link](100l);
int x =10; String s1 = [Link](x).toString();
double db = 4.1; String s2 = [Link](db);
double z = 9.67d; short h = [Link](z).shortValue();
String message = "bonjour" ;
Et éventuellement, un « modificateur d’accès » :
Sofiane HACHICHA
final double pi=3.14159;
ISIMG 2025 - 2026
String n'est pas un type primitif, mais une classe 81
3- Les bases du langage
3.5 Les opérateurs

En Java, les opérateurs sont regroupés par :


type d’opérations :
d'assignation
POO : Java

arithmétique
d'incrémentation et de décrémentation
de comparaison
de bits
logique
sur les chaînes de caractères
de manipulations binaires
le nombre d’opérandes :
unaire
Sofiane HACHICHA binaire
ISIMG 2025 - 2026
ternaire 82
3- Les bases du langage
3.5.1 Opérateurs unaires

Opérateurs unaires Action Exemple

- négation i=-j
++ incrémentation de 1 i=j++ ou i=++j
POO : Java

-- décrémentation de 1 i=j-- ou i=--j


++ et -- peuvent préfixer ou postfixer la variable.
i = j++ : post-incrémentation
La valeur en cours de j est affectée à i et ensuite la valeur de j
est incrémentée de 1.
i = ++j : pré-incrémentation
La valeur en cours de j est incrémentée de 1 et ensuite la valeur
de j est affectée à i.
Exemple : Résultat d’affichage
int x = 2, y = x++;
Sofiane HACHICHA
[Link]("x= "+x+"; y= "+y);
ISIMG 2025 - 2026 int z= ++x; 83
[Link]("z= "+z);
3- Les bases du langage
3.5.2 Opérateurs binaires

Opérateurs Action Exemple Syntaxe


binaires équivalent
+ addition i = j+k;
+= i += 2; i= i + 2
POO : Java

- soustraction i = j - k;
-= i -= j; i= i - j
* multiplication x=2*y;
*= x *=x; x= x * x
/ division i =j/k;
/= (tronque si les x /= 10; x= x /10
arguments sont entiers)
% modulo i = j %k;
%= i %=2; i= i %2
<< décalage à gauche i<<k; i*2k
>> décalage à droite i>>k; i/2k (si i≥0)
Sofiane HACHICHA
ISIMG 2025 - 2026
84
3- Les bases du langage
3.5.3 Opérateurs relationnels

Le résultat d'une comparaison est une valeur booléenne


(vrai ou faux).
POO : Java

Dans le langage Java, le résultat d'une comparaison est


true ou false.

Opérateurs Action Exemple


relationnels
< plus petit que x<i;
> plus grand que i>100;
<= plus petit ou égal que j<=k;
>= plus grand ou égal que c>='a';
== égal à i==20;
!= différent de c!='z';
Sofiane HACHICHA
ISIMG 2025 - 2026
85
3- Les bases du langage
3.5.4 Opérateurs logiques

Opérateurs Action Exemple Syntaxe


logiques équivalent
! négation !p
POO : Java

& ET p & (i<10)


| OU p|q
^ OU exclusif p ^ false
~ Complément ~p
&& ET évalué p && q && r
|| OU évalué p || q || r
!= négation assignée p!=q;
&= ET assigné p&=q p= p & q
|= OU assigné p|=q p= p | q

Dans le cas d’un opérateur logique évalué, l’évaluation de


Sofiane HACHICHA l’expression logique est stoppée dès que sa valeur de
ISIMG 2025 - 2026
vérité peut être assurée. 86
3- Les bases du langage
3.5.5 Opérateurs ternaires

Un unique opérateur ternaire.

Cette expression est une sorte de si-alors-sinon qui


POO : Java

renvoie une valeur :


a = (condition e) ? x : y
si la condition e est vraie alors a vaut x sinon a vaut y.

Exemples :
int res = (v==2) ? 1 : 0;
On affecte à res la valeur 1 si v vaut 2, sinon on
affecte à res la valeur 0.

String s = age >= 18 ? "majeur" : "mineur";


Sofiane HACHICHA On affecte à s la valeur majeur si age est supérieur
ISIMG 2025 - 2026
ou égal à 18, sinon on affecte à s la valeur mineur. 87
3- Les bases du langage
3.6 structures de contrôle

Java propose des structures de contrôle classiques pour


effectuer des instructions en fonction de la valeur de
certaines variables.
POO : Java

Java est rétro-compatible avec le C et possède quelques


structures supplémentaires mais pas de goto.

Les conditions des if, for, while doivent être des booleans.

Java 14, Java 21 et Java 23 ont introduit plusieurs


nouveautés dans la syntaxe du switch.

Par convention, il est préférable d’utiliser un bloc même si


il y a une seule instruction.

Sofiane HACHICHA
ISIMG 2025 - 2026
88
3- Les bases du langage
3.6.1 structures de contrôle : if

Syntaxe :
if (expression booléenne ) {instruction ;}
POO : Java

Exemple : Résultat d’affichage


public class ifApplication1 {

public static void main(String[ ] args)


{
int i = 4 ;
if ( i % 2 != 0 ) {[Link] (" i est impair ");}
}
}

Attention : L'expression logique attendue est


obligatoirement de type boolean.
si l’on écrit if ( i = 1 ), le compilateur détectera une erreur, car
Sofiane HACHICHA
ISIMG 2025 - 2026
le type de l'expression logique est alors int.
89
3- Les bases du langage
3.6.1 structures de contrôle : if - else

Syntaxe Exemple
if (expression booléene ) public class if_elseApplication {
{
instruction 1 ; public static void main(String[ ] args)
POO : Java

…… {
instruction i ; int i = 4 ;
} boolean test = (i % 2 == 0) ? true : false;
else
{ if ( test )
instruction j ; {
[Link] (" i est pair " );
…… }
instruction n ; else
} {
[Link] (" i est impair " );
Résultat d’affichage }
}
}

Sofiane HACHICHA
ISIMG 2025 - 2026
90
3- Les bases du langage
3.6.1 structures de contrôle : if – else if

Syntaxe Exemple
if (expression booléene 1) public class if_else_ifApplication {
{
instruction 1 ; public static void main(String[ ] args)
POO : Java

…… {
instruction i ; var x = -3;
} if ( x > 0 )
else if (expression booléene 2 ) {
{ [Link] (x + " est strictement positif");
instruction j; }
…… else if ( x < 0 )
instruction m ; {
} [Link] (x + " est strictement négatif");
else }
{ else
instruction m+1 ; {
…… [Link] (x + " est nul");
}
}
}
Résultat d’affichage }
Sofiane HACHICHA
ISIMG 2025 - 2026
91
3- Les bases du langage
3.6.2 structures de contrôle : switch (1/8)

L'instruction "switch" permet d’effectuer une sélection


parmi plusieurs valeurs (appelé aussi Switch Statement).
POO : Java

Le break permet de quitter le switch.

Le default est optionnel, il sera exécuté si la valeur de la


variable ne correspond à aucune valeur de case.

Avant Java 21, une variable dans switch peut être :


de type simple : int, short, byte et char
de type Wrapper correspondant : Integer, Short,
Byte et Character
de type énumération depuis Java 6 ( Exemple :
enum Civilite {Monsieur, Madame, Mademoiselle};)
Sofiane HACHICHA
ISIMG 2025 - 2026 de type chaîne de caractère (String) depuis Java 7
92
3- Les bases du langage
3.6.2 structures de contrôle : switch (2/8)

Syntaxe Exemple
switch (nomVariable) public class switchApplication1 {
{ public static void main(String[ ] args)
POO : Java

case valeur_1 : {
int i = 1;
instr1_1; instr1_2; …
switch ( i )
break; { case 0 :
... [Link] (" 0 " );
case valeur_N : case 1 :
break;
instrN_1; instrN_2; [Link] (" 1 " );
break; break;
case 2 :
default: /* optionnel */ [Link] (" 2 " );
instrD_1; instrD_2; ... break;
break; default :
[Link] (i);
} }
break;
Résultat d’affichage
}
}
Sofiane HACHICHA
ISIMG 2025 - 2026
93
3- Les bases du langage
3.6.2 structures de contrôle : switch (3/8)

Il est possible de Exemple


regrouper plusieurs
cases. public class switchApplication2 {

Une case peut public static void main(String[ ] args)


POO : Java

accepter {
plusieurs valeurs String x = "2";
séparées par des switch ( x )
virgules. { case "1" :
[Link] (" un " );
break;
case "2" :
[Link] (" deux " );
case "3", "4" :
[Link] (" trois " );
break;
default :
[Link] (" autre " );
break;
}
Résultat d’affichage
}
}
Sofiane HACHICHA
ISIMG 2025 - 2026
94
3- Les bases du langage
3.6.2 structures de contrôle : switch (4/8)

Une nouvelle syntaxe du Exemple


switch (depuis Java 14) :
public class switchApplication3 {
Remplacement de
":" par "->". public static void main(String[ ] args)
POO : Java

{ int seats = 1; String type ="rien";


Les instructions à
droite de "->" dans switch ( seats )
chaque case peuvent { case 1, 2 -> type="small";
être multiples et case 3, 4, 5 -> { // accolade obligatoire
doivent être placées [Link] (" test " );
dans un bloc de type="medium";
code. }
Pas besoin de break }
[Link](type);

Résultat d’affichage }
}
Sofiane HACHICHA
ISIMG 2025 - 2026
95
3- Les bases du langage
3.6.2 structures de contrôle : switch (5/8)

Le switch peut aussi être Exemple


utilisé comme une
expression et retourner public class switchApplication4 {
une valeur (appelé
public static void main(String[ ] args)
POO : Java

Switch Expression).
{ int seats = 5;
La valeur retournée
var type = switch ( seats )
sera fournie à droite { case 1, 2 -> "small";
de "->".
case 3, 4, 5 -> {
En présence d’un [Link] (" test " );
bloc de code, utiliser yield "medium";
}
yield pour préciser la default -> "big";
valeur à retourner. //bloc default obligatoire sinon erreur
La clause default est }; // faut pas oublier le point virgule ( ; )
obligatoire sauf pour [Link](type);
les types énumérés
Résultat d’affichage }
}
Sofiane HACHICHA
ISIMG 2025 - 2026
96
3- Les bases du langage
3.6.2 structures de contrôle : switch (6/8)

Exemple
enum Jours {LUNDI, MARDI, MERCREDI, JEUDI, VENDREDI, SAMEDI, DIMANCHE}
POO : Java

public class switchApplication5 {

public static void main(String[ ] args)


{ Jours jr = [Link];
int nbrLettres = switch (jr) {
case LUNDI, MARDI, JEUDI -> {yield 5;}
case SAMEDI -> 6;
case DIMANCHE, MERCREDI, VENDREDI -> 8;
};
[Link]("Nombre de lettres du jour : "+nbrLettres);
}
}
Résultat d’affichage

Sofiane HACHICHA
ISIMG 2025 - 2026
97
3- Les bases du langage
3.6.2 structures de contrôle : switch (7/8)

Depuis Java 21, il est possible de vérifier directement le type d’une


variable non primitif avec un swicth statement.
POO : Java

Switch Pattern Matching

Grâce à la JEP 455 de Java 23 (en mode preview), il est désormais


possible d'appliquer des vérifications aux types primitifs.
Il est ainsi envisageable de vérifier de manière concise si un
type primitif est en mesure d’être stocké dans un autre.

Sofiane HACHICHA
ISIMG 2025 - 2026
98
3- Les bases du langage
3.6.2 structures de contrôle : switch (8/8)
Exemple
public class TestSwitch{
static void validObject(Object obj){
switch (obj) {
POO : Java

case Integer i -> [Link](i+1);


case Double d -> [Link](d+2);
case null, default -> [Link](obj); }
}
static void validPrimitif(long val){
switch (val) {
case short s -> [Link](val + " instanceof short " + s);
case long l -> [Link](val + " instanceof long : " + l);
case double d -> [Link](val + " instanceof double : " + d); }
}
public static void main(String[] args) { Résultat d’affichage
var x = 1000;
validObject(x);
validPrimitif(x); }
}
Sofiane HACHICHA
ISIMG 2025 - 2026
99
3- Les bases du langage
3.6.3 structures de contrôle : for (1/3)

Exemple :
public class forApplication {

public static void main(String[ ] args)


POO : Java

{
int somme = 0;
for ( int compteur = 1, max = 4 ; compteur < max ; compteur++)
{
somme = somme + compteur;
}
[Link] (somme );
} Résultat d’affichage
}

Fonctionnement :
initialisation du compteur,
comparaison avec max (expression booléenne),
réalisation des instructions,
Sofiane HACHICHA
ISIMG 2025 - 2026 Incrémentation du compteur et on recommence.
100
3- Les bases du langage
3.6.3 structures de contrôle : for (2/3)

Impossible d’omettre l’initialisation, l’expression


booléenne ou l’incrément dans la déclaration d’un for.
Cependant, il est possible de les laisser vides en plaçant
correctement un ou plusieurs « ; ».
POO : Java

int i = 0;
for (; i < 10; ++i) {
// instructions
}
Du coup, il est simple de réaliser une boucle infinie :
for (int j=1; j < 5;) {
// instructions
}

for (; ;) {
Sofiane HACHICHA // instructions
ISIMG 2025 - 2026
} 101
3- Les bases du langage
3.6.3 structures de contrôle : for (3/3)

Il existe une forme améliorée du for (appelée for-each)


spécialement conçue pour parcourir des collections
d'éléments (un tableau par exemple).
POO : Java

for (int i : maCollection) {


// instructions à exécuter
}

Il faut que le type de la variable i soit compatible pour


l’assignation d’un élément de la collection (un tableau
d’entiers (maCollection) dans l’exemple précédent) .

Sofiane HACHICHA
ISIMG 2025 - 2026
102
3- Les bases du langage
3.6.4 structures de contrôle : while

Exemple :

public class whileApplication {


POO : Java

public static void main(String[ ] args)


{
int compteur = 1 ; int max = 4 ; int somme = 0;

while (compteur < max )


{
somme = somme + compteur ;
compteur++;
}

[Link] (somme );
} Résultat d’affichage
}

Sofiane HACHICHA
ISIMG 2025 - 2026
103
3- Les bases du langage
3.6.5 structures de contrôle : do - while

Exemple :
public class do_WhileApplication {

public static void main(String[ ] args)


POO : Java

{
int compteur =1; int max = 4 ; int somme = 0;

do
{
somme = somme + compteur ;
compteur++;
}
while (compteur < max ) ;

[Link] (somme );
}
Résultat d’affichage
}

Sofiane HACHICHA
ISIMG 2025 - 2026
104
3- Les bases du langage
3.6.6 structures de contrôle : break

Utilisation :
Pour sortir d’une structure de contrôle (for ou while
ou do-while) avant que la condition du test soit
POO : Java

remplie.
Quand la boucle rencontre une instruction break, elle se
termine immédiatement sans exécuter le code restant.
public class breakApplication { Résultat d’affichage
public static void main(String[ ] args)
{
int compteur =0;
while (compteur < 10 )
{
[Link] (compteur );
compteur++;
if (compteur == 5) break;
Sofiane HACHICHA }
}
ISIMG 2025 - 2026
} 105
3- Les bases du langage
3.6.7 structures de contrôle : continue

Utilisation :
Pour arrêter l’exécution de l’itération actuelle d’une
structure de contrôle (for ou while ou do-while) et
POO : Java

de reprendre l’exécution à l’itération suivante.


public class continueApplication {

public static void main(String[ ] args)


{
int compteur =0;
for(compteur=0 ; compteur< 6 ; compteur++ )
{
if (compteur == 4) continue; Résultat d’affichage
[Link] (compteur );
}
}
}

Sofiane HACHICHA
ISIMG 2025 - 2026
106
3- Les bases du langage
3.6.8 structures de contrôle : return

Le type de données de la valeur retournée doit


correspondre au type de retour de la méthode.
public double getSalaire() {
POO : Java

return 1500.7; }
Quand une méthode est déclarée void, il faut utiliser la
forme de retour qui ne retourne pas de valeur : return;
public void doSomething(){
return; }
Écrire des instructions immédiatement après une
instruction return génère une erreur de compilation
puisque ces instructions ne seront jamais exécutées.
if (i % 2 == 0) {
return 0;
Sofiane HACHICHA i++; // Erreur à la compilation
ISIMG 2025 - 2026
107
}
3- Les bases du langage
3.7 Les conversions des types (1/12)

Il y a 2 catégories de conversions possibles :

Conversions explicites :
POO : Java

celles faites sur une demande explicite par le programmeur


appelées le transtypage (ou cast).

Conversions implicites :
celles faites automatiquement par le compilateur :
lors d'une affectation,
lors d'une promotion arithmétique,
lors d'un passage de paramètres (lors de l'invocation d'une
méthode),
Sofiane HACHICHA
ISIMG 2025 - 2026
Lors d’une conversion du type primitif vers son Wrapper
(ou inversement) 108
3- Les bases du langage
3.7 Les conversions des types (2/12)

Conversion explicite :
Objectif :
POO : Java

changer le type d'une donnée si besoin.

Comment ? :
Préfixer l’opérande par le type choisi.
Encadrer le type choisi par des parenthèses.

Exemple :
Résultat d’affichage
double d = 2.5 ;
long l = (long) d ;
Sofiane HACHICHA [Link]("d = "+d+" ; l="+l);
ISIMG 2025 - 2026
109
3- Les bases du langage
3.7 Les conversions des types (3/12)

Conversion implicite lors d'une affectation :


Objectif :
changer automatiquement le type d'une donnée si besoin.
POO : Java

Comment ? :
Exemple 1 :
Contrairement à ce qui se passe dans C, les conversions
pouvant provoquer une perte de valeur ne sont pas
autorisées de manière implicite comme dans C : cela doit
être explicitement demandé.
Exemple 2 :
Un type char peut être utilisé partout où une valeur de
type int est permis.
Sofiane HACHICHA
ISIMG 2025 - 2026
110
3- Les bases du langage
3.7 Les conversions des types (4/12)

Conversion implicite lors d'une affectation :


Illustration pour l’exemple 1:
public class ProgrammeAffectation {
POO : Java

public static void main(String[ ] args)


{
int i;
short j = 2 ;
i = j; Conversion implicite

float k= 1.2f ;
i = k; Erreur de compilation
}
}
Solution :

Sofiane HACHICHA
ISIMG 2025 - 2026
111
3- Les bases du langage
3.7 Les conversions des types (5/12)

Conversion implicite lors d'une affectation :


Illustration pour l’exemple 2:
POO : Java

public class ProgrammeSoustraction {

public static void main(String[ ] args)


{
int i;
i = 'A'; Conversion implicite

[Link]( i ) ;
}
}

Résultat d’affichage
Sofiane HACHICHA
ISIMG 2025 - 2026
112
3- Les bases du langage
3.7 Les conversions des types (6/12)

Conversion implicite lors d'une promotion arithmétique :


Objectif :
Si un opérateur s'applique sur deux opérandes de types
POO : Java

différents, un des deux opérandes sera converti (ou promu) au


type de l'autre.
Exemple :
public class ProgrammeSoustraction {

public static void main(String[ ] args)


{
int i;
i = 'A' - 1; Conversion implicite

[Link]( i ) ;
}
}
Résultat d’affichage
Sofiane HACHICHA
ISIMG 2025 - 2026
113
3- Les bases du langage
3.7 Les conversions des types (7/12)

Conversion implicite lors d'un passage de paramètres par


l'invocation d'une méthode :
POO : Java

public class ProgrammeSoustraction {

static short entierShort;

static void Afficher( int entier )


{
[Link]( entier ) ;
}

public static void main(String[ ] args)


{
entierShort = 2 ;
Afficher(entierShort ) ; Invocation de la
} méthode Afficher
}
Sofiane HACHICHA
ISIMG 2025 - 2026
114
3- Les bases du langage
3.7 Les conversions des types (8/12)

Conversion implicite : passage d’un type primitif vers son


Wrapper (ou inversement) depuis Java 5
POO : Java

Integer j = 2;
UnBoxing
int k = j; Conversion implicite
[Link](k); Résultat d’affichage

int l = 3; AutoBoxing
Integer m = l; Conversion implicite
[Link](m); Résultat d’affichage

Integer z = m + j;
UnBoxing
if(z<10){
[Link](z); Résultat d’affichage
Sofiane HACHICHA }
ISIMG 2025 - 2026
115
3- Les bases du langage
3.7 Les conversions des types (9/12)

Passage d’un type primitif <--> son Wrapper


class Boxing1{
static void m(Long l) {[Link]("Long");}
POO : Java

public static void main(String args[]){


long a=10;
m(a); Résultat d’affichage
}
}
class Boxing2{
static void m(int i) {[Link]("int");}
public static void main(String args[]){
Integer s=30;
m(s);
Résultat d’affichage
} }
Sofiane HACHICHA
ISIMG 2025 - 2026
116
3- Les bases du langage
3.7 Les conversions des types (10/12)

Passage d’un type primitif <--> son Wrapper


class Boxing3{
static void m(long l) {[Link]("long");}
POO : Java

public static void main(String args[]){


Integer a=10;
m(a); Résultat d’affichage
}
}
class Boxing4{
static void m(Long l) {[Link]("Long");}
public static void main(String args[]){
int a=10;
m(a); // Erreur à la compilation
}
Sofiane HACHICHA
ISIMG 2025 - 2026 } 117
3- Les bases du langage
3.7 Les conversions des types (11/12)

Passage d’un type primitif <--> son Wrapper


class Boxing5{
static void m(int i) {[Link]("int");}
POO : Java

static void m(Short i) {[Link]("Short");}


public static void main(String args[]){
short s=30;
Résultat d’affichage
m(s);
} }
class Boxing6{
static void m(long i) {[Link]("long");}
static void m(short i) {[Link]("short");}
public static void main(String args[]){
var a=10;
Résultat d’affichage
m(a);
Sofiane HACHICHA
ISIMG 2025 - 2026 } } 118
3- Les bases du langage
3.7 Les conversions des types (12/12)

Attention :
Il n'y a pas de conversion possible (implicite ou
explicite) entre un type entier et le type booléen :
POO : Java

int i = 0;

If ( i ) // Erreur à la compilation
{
………..
}

If ( i != 0 ) // Ok
{
………..
}
Sofiane HACHICHA
ISIMG 2025 - 2026
119
3- Les bases du langage
3.8 Les tableaux (1/4)

Déclaration
monodimensionnel
int[ ] tableau_Entier;
POO : Java

équivalent à : int tableau_Entier[ ];


int[ ] tb1, tb2;
multidimensionnel
Color rgb_cube[ ][ ][ ];
Création et initialisation
int[] primes = {1, 2, 3, 5, 7};
int[] tableauEntier = new int[] {1, 2, 3, 4};
String[] tabChaine = new String[] {"B", "le", "mot"};
int[] tableau_Entier = new int[50];
Sofiane HACHICHA
ISIMG 2025 - 2026
int tb[] = new int[10], value = 10; 120
3- Les bases du langage
3.8 Les tableaux (2/4)

Les éléments d'un tableau de types primitifs en Java sont


initialisés à une valeur par défaut en fonction du type de
données.
Les éléments d'un tableau d'objets en Java, par défaut,
POO : Java

sont initialisés à null.


Les indices des tableaux commencent par 0.
Exemple d’utilisation des tableaux :
public class tabeauApplication {

public static void main(String[ ] args)


{
int[ ] tableau_Entier = new int[50];
[Link](tableau_Entier.length);
tableau_Entier[51]=10;
} Résultat d’affichage
}
Sofiane HACHICHA
ISIMG 2025 - 2026
121
3- Les bases du langage
3.8 Les tableaux (3/4)

En Java, les tableaux sont statiques, ce qui signifie que


leur taille ne peut pas changer une fois qu'ils ont été
créés.
Pour parcourir un tableau tab (de chaînes de caractères
POO : Java

par exemple) déjà créé :

for (int i = 0; i < [Link]; i++){


[Link](tab[i]);
}

Où encore avec un for amélioré (for-each)


for (String elt : tab){
[Link](elt);
}
Sofiane HACHICHA
ISIMG 2025 - 2026
122
3- Les bases du langage
3.8 Les tableaux (4/4)

Il est possible d’initialiser des tableaux à plusieurs


dimensions.
int[][] tableauDeuxDimensions = {{1, 2}, {3, 4}};
POO : Java

int[][][] tableauTroisDimensions = new int[2][10][5];

Les tableaux multidimensionnels sont en fait des tableaux


de tableaux
Il est possible de déclarer un tableau sans préciser les
dimensions au-delà de la première et affecter ensuite
des tableaux à chaque élément du tableau principal.
Ces tableaux internes peuvent même avoir des
tailles différentes.
int[][] tableauDeuxDimensions = new int[2][];

tableauDeuxDimensions[0] = new int[10];


Sofiane HACHICHA
ISIMG 2025 - 2026 tableauDeuxDimensions[1] = new int[5];
123

Vous aimerez peut-être aussi