0% ont trouvé ce document utile (0 vote)
27 vues110 pages

Java 2019

Java2019

Transféré par

Iibra Katii
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)
27 vues110 pages

Java 2019

Java2019

Transféré par

Iibra Katii
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
Vous êtes sur la page 1/ 110

Introduction Au Langage JAVA

HIMI Béjaia: Higher Management Institute


Module : Langage de Programmation JAVA
Groupe : BBA 11
Année : 2019/2012
Responsable du Module : M.KENDIRA
1
Qu'est-ce que 'java?
▪ Java est un langage de programmation et une plate-forme.
▪ Java est un langage de programmation de haut niveau, robuste, sécurisé et
orienté objet.
❑ Plate-forme: Tout environnement matériel ou logiciel dans lequel un programme
s'exécute, est connu sous le nom de plate-forme.
Depuis Java a son propre environnement d'exécution (JRE) et API, il est appelé plate-
forme.
Exemple Java

2
Où est-il utilisé?

Selon Sun, 3 milliards d'appareils fonctionnent sous Java. Il existe de nombreux


périphériques où java est actuellement utilisé.
Certains d'entre eux sont les suivants:

▪ Applications de bureau telles que acrobat reader, media player, antivirus,


etc.
▪ Applications Web telles que irctc.co.in, javatpoint.com etc.
▪ Applications d'entreprise telles que les applications bancaires.
▪ Mobile
▪ Système embarqué
▪ Carte à puce
▪ Robotique
▪ Jeux etc.

3
Types d'applications Java:

Il existe principalement 4 types d'applications qui peuvent être créées à l'aide de


la programmation java:
Application autonome:
Il est également connu sous le nom application de bureau ou de
fenêtre. Une application que nous devons installer sur chaque
machine telle que lecteur multimédia, antivirus, etc. AWT et Swing
sont utilisés dans java pour créer des applications autonomes.

Application Web:
Une application qui s'exécute sur le côté serveur et crée une page
dynamique, est appelée application Web. Actuellement, les
technologies servlet, jsp, struts, jsf etc. sont utilisées pour créer des
applications Web en Java.
4
Application d'entreprise:
Une application qui est distribuée dans la nature, comme les
applications bancaires, etc Il a l'avantage de la sécurité de haut niveau,
l'équilibrage de charge et de clustering. En java, EJB est utilisé pour
créer des applications d'entreprise.

Application mobile:
Une application créée pour les appareils mobiles. Actuellement,
Android et Java ME sont utilisés pour créer des applications mobiles.

5
Histoire de Java:

L'histoire de Java est intéressante à connaitre.


L'histoire de java commence par Green Team. Les membres de l'équipe Java
(aussi connu sous le nom d'équipe verte) ont lancé une tâche
révolutionnaire pour développer une langue pour les appareils numériques
tels que les décodeurs, les téléviseurs, etc.
Pour les membres de l'équipe verte, c'était un concept avancé à cette
époque. Mais, il a été adapté pour la programmation Internet. Plus tard, la
technologie Java a été intégrée par Netscape.

James Gosling 6
Actuellement, Java est utilisé dans la programmation Internet, les appareils
mobiles, les jeux, les solutions e-business, etc Il est donné les principaux points
qui décrivent l'histoire de java:
1) James Gosling, Mike Sheridan et Patrick Naughton ont initié le projet de
langage Java en juin 1991. La petite équipe d'ingénieurs Sun est appelé Green
Team.
2) Conçu à l'origine pour les petits systèmes intégrés dans les appareils
électroniques tels que les décodeurs.
3) Premièrement, il a été appelé "Greentalk" par James Gosling et l'extension
de fichier était .gt.
4) Après cela, il a été appelé Oak et a été développé comme une partie du
projet vert.
Pourquoi SUN a choisi le nom "OAK" ?
5) Pourquoi le chêne? Le chêne est un symbole de force et choisi comme arbre
national de nombreux pays comme les États-Unis, la France, l'Allemagne, la
Roumanie, etc.
6) En 1995, le OAK a été rebaptisé «Java» parce qu'il était déjà une marque de
7
commerce de Oak Technologies.
Pourquoi SUN a choisi le nom « JAVA" ?
7) Pourquoi ont-ils choisi le nom java pour le langage Java? L'équipe s'est réunie pour
choisir un nouveau nom. Les mots proposés étaient «dynamiques»,
«révolutionnaires», «soie», «secousse», «ADN», etc. Ils voulaient quelque chose qui
reflète l'essence de la technologie: révolutionnaire, dynamique, vivant, frais, unique
et facile à épeler Et amusant à dire.
Selon James Gosling "Java a été l'un des meilleurs choix avec Silk". Depuis java était si
unique, la plupart des membres de l'équipe préféré java.
8) Java est une île d'Indonésie où le premier café a été produit (appelé café java).
9) Notez que Java est juste un nom et non un acronyme.
10) Initialement développé par James Gosling chez Sun Microsystems (qui est
maintenant une filiale d'Oracle Corporation) et sorti en 1995.
11) En 1995, le magazine Time a appelé Java l'un des dix meilleurs produits de 1995.
12) JDK 1.0 est publié le (23 janvier 1996).

8
Historique des versions Java
Il existe de nombreuses versions java qui ont été publiées :
JDK Alpha et Beta (1995)
JDK 1.0 (23 janvier 1996)
JDK 1.1 (19 février 1997)
J2SE 1.2 (8 décembre 1998)
J2SE 1.3 (8 mai 2000)
J2SE 1.4 (6 février 2002)
J2SE 5.0 (30 septembre 2004)
Java SE 6 (11 déc., 2006)
Java SE 7 (28 juillet 2011)
Java SE 8 (18 mars, 2014)
Java SE 9 (Initialement prévu pour 2015 mais reportée en partie à cause du projet
Jigsaw, cette version est finalement sortie le 21 septembre 2017)
Java SE 10 (20 mars 2018)
Java SE 11 (25 septembre 2018)
Java SE 12 (Cette version est prévue pour le 19 mars 2019)
9
Caractéristiques de Java
Il est donné de nombreuses caractéristiques de java. Ils sont également
connus sous le nom de buzzwords java.
Les caractéristiques Java ci-dessous sont simples et faciles à comprendre.
o simple
o Orienté Objet
o Plateforme indépendante
o Sécurisé
o Robuste
o Architecture neutre
o Portable
o Dynamique
o interprété
o Haute performance
o Multithread
o Distribué
10
Simple
Selon Sun, le langage Java est simple parce que:
• La Syntaxe est basé sur C ++ (si plus facile pour les programmeurs de
l'apprendre après C + +).
• Suppression de nombreuses fonctionnalités confuses et / ou rarement utilisées,
par exemple pointeurs explicites, la surcharge de l'opérateur, etc…..
• Pas besoin de supprimer des objets non référencés car il ya le « Automatic
Garbage Collection » dans java.
Orienté objet
Objet-orienté signifie que nous organisons notre logiciel comme une combinaison
de différents types d'objets qui intègre les données et le comportement.
La programmation orientée objet (OOPs) est une méthodologie qui simplifie le
développement et la maintenance de logiciels en fournissant quelques règles.
Les concepts de base des POO sont les suivants:
Objet Polymorphisme
Classe Abstraction
Héritage Encapsulation 11
Plateforme indépendante
Une plate-forme est l'environnement matériel ou logiciel dans lequel un programme
s'exécute.
Il existe deux types de plates-formes basées sur le logiciel et le matériel. Java fournit
une plate-forme logicielle.
La plate-forme Java diffère de la plupart des autres plates-formes dans le sens où il
s'agit d'une plate-forme basée sur un logiciel qui fonctionne sur le dessus d'autres
plates-formes matérielles. Il comporte deux volets:
Environnement d'exécution (Runtime Environment)
API (Interface de programmation d'application)((Application Programming
Interface)

12
Le code Java peut être exécuté sur plusieurs
plates-formes, par ex. Windows, Linux, Sun
Solaris, Mac / OS, etc.
Le code Java est compilé par le compilateur et
converti en bytecode.
Ce bytecode est un code indépendant de la
plateforme car il peut être exécuté sur plusieurs
plates-formes, c'est-à-dire écrire une fois et
exécuter n'importe où (WORA).
(Write Once and Run Anywhere)

13
Sécurisé:
Java est sécurisé car:
• Pas de pointeur explicite
• Programmes Java exécutés à l'intérieur du bac à sable de la machine virtuelle
Ces sécurités sont fournies
par le langage java. Une
certaine sécurité peut
également être fournie par
le développeur
d'applications via SSL, JAAS,
Cryptographie, etc.
Classloader: ajoute la sécurité en séparant le paquet des classes du système de
fichiers local de ceux qui sont importés à partir des sources réseau.
Bytecode Verifier: contrôle les fragments de code pour le code illégal qui peut violer
le droit d'accès aux objets.
Security Manager: détermine les ressources auxquelles une classe peut accéder,
telles que la lecture et l'écriture sur le disque local. 14
Robuste
Robuste signifie simplement fort. Java utilise une gestion de mémoire forte. Il y ’a
un manque de pointeurs qui évite le problème de sécurité. Il ya collecte
automatique des miettes dans java. Il existe un mécanisme de gestion des
exceptions et de vérification de type dans java. Tous ces points rend java robuste.

Architecture neutre
Il n'existe pas d’implémentation dépendant des caractéristiques ou des
fonctionnalités, par ex. La taille des types primitifs est fixe.
En programmation C, le type de données int occupe 2 octets de mémoire pour
l'architecture 32 bits et 4 octets de mémoire pour l'architecture 64 bits. Mais en
java, il occupe 4 octets de mémoire pour les architectures 32 et 64 bits.

Portable

Nous pouvons transporter le bytecode java vers n'importe quelle plate-forme.


15
Distribué

Nous pouvons créer des applications distribuées en Java. RMI et EJB sont utilisés pour
créer des applications distribuées. Nous pouvons accéder aux fichiers en appelant les
méthodes à partir de n'importe quelle machine sur Internet.

Multithread (Multitâches)
Un thread est comme un programme séparé, exécuté simultanément.
Nous pouvons écrire des programmes Java qui traitent de nombreuses tâches à la fois
en définissant plusieurs threads.
Le principal avantage du multi-threading est qu'il n'occupe pas de mémoire pour
chaque thread. Il partage une zone de mémoire commune. Les threads sont
importants pour les applications multimédias, Web etc.

16
Un Programme Simple de Java

Dans cette partie, nous allons apprendre à écrire un programme simple de java.
Nous pouvons écrire un simple programme « hello java » facilement après
l'installation du JDK.

Pour créer un programme java simple, vous devez créer une classe qui contient
la méthode principale. Comprenons d'abord l'exigence.
Exigence pour l'exemple Hello Java
Pour exécuter tout programme java, vous devez:

o Installez le JDK si vous ne l'avez pas installé, téléchargez le JDK et installez-le.


o Définit le chemin du répertoire jdk / bin.
o Créer le programme java
o Compiler et exécuter le programme java

17
18
Comment définir le chemin d'accès dans Java
Le chemin d'accès doit être défini pour l'utilisation d'outils tels que javac, java, etc.
Si vous enregistrez le fichier source java dans le répertoire jdk / bin, il n'est pas
nécessaire de définir le chemin d'accès car tous les outils seront disponibles dans le
répertoire courant.
Mais si vous avez votre fichier java en dehors du dossier jdk / bin, il est nécessaire de
définir le chemin d'accès de JDK.
Il existe 2 façons de définir le chemin java:
❑ temporaire
❑ permanent
Comment configurer le chemin temporaire de JDK dans Windows:
Pour définir le chemin temporaire de JDK, vous devez suivre les étapes suivantes:
1. Ouvrir l'invite de commande
2. Copier le chemin d'accès du répertoire jdk / bin
3. Écriture dans l'invite de commande: set path = copied_path
Par exemple: set path=C:\Program Files\Java\jdk1.6.0_23\bin 19
20
Comment définir Permanent Path de JDK dans Windows
Pour définir le chemin permanent de JDK, vous devez suivre les étapes
suivantes:
Aller aux propriétés de MyComputer -> onglet avancé -> variables
d'environnement -> nouvel onglet de la variable utilisateur -> chemin
d'écriture dans le nom de la variable -> chemin d'écriture du dossier bin dans
la valeur de la variable -> ok -> ok -> ok

21
22
23
24
Définition du chemin Java dans le système d'exploitation Linux

Définir le chemin d'accès dans Linux OS est identique à définir le chemin dans le
système d'exploitation Windows. Mais ici nous utilisons l'outil d'exportation plutôt
que de définir. Voyons comment configurer le chemin dans le système d'exploitation
Linux:
export PATH=$PATH:/home/jdk1.6.01/bin/

Ici, nous avons installé le JDK dans le répertoire personnel sous Root (/
home).

25
Création d'un exemple hello java

Pour compiler: javac Simple.java


Pour exécuter: java Simple

Pour écrire le programme simple, ouvrez le bloc-notes par le menu Démarrer -


> Tous les programmes -> Accessoires -> Bloc-notes et écrire le programme
simple comme affiché ci-dessous:

26
27
Comme indiqué dans le diagramme ci-dessus, écrire le programme simple de java
dans le bloc-notes et enregistré comme Simple.java. Pour compiler et exécuter ce
programme, vous devez ouvrir l'invite de commande par le menu Démarrer -> Tous
les programmes -> Accessoires -> invite de commande.

Pour compiler et exécuter le


programme ci-dessus, allez dans
votre répertoire actuel d'abord;
Mon répertoire actuel est c: \ new.
Ecrire ici:
Pour compiler: javac Simple.java
Pour exécuter: java Simple

28
Comprendre le premier programme java

Voyons ce que signifie la class, public, static, void, main, String [],
System.out.println ().
• Class est utilisé pour déclarer une classe dans java.
• Public est un modificateur d'accès qui représente la visibilité, cela signifie qu'il
est visible pour tous.
• Static est un mot-clé, si nous déclarons toute méthode comme statique, elle est
connue sous le nom de méthode statique. L'avantage principal de la méthode
statique est qu'il n'est pas nécessaire de créer un objet pour invoquer la méthode
statique. La méthode principale est exécutée par la JVM, donc elle n'a pas besoin
de créer un objet pour invoquer la méthode principale. Ainsi, il enregistre la
mémoire.

29
• Void est le type de retour de la méthode, cela signifie qu'il ne retourne
aucune valeur.
• Main représente le démarrage du programme.
• String [] args est utilisé pour l'argument de ligne de commande. Nous
l'apprendrons plus tard.
• System.out.println () est l'instruction d'impression utilisée.

Nous allons en apprendre plus sur le fonctionnement interne de


System.out.println déclaration plus tard.

30
Résolution d'une erreur "javac n'est pas reconnu comme une commande
interne ou externe"?
S'il se produit un problème comme indiqué dans la figure ci-dessous, vous devez
définir le chemin d'accès. Comme DOS ne connaît pas javac ou java, nous devons
définir le chemin. Le chemin n'est pas nécessaire dans ce cas si vous enregistrez votre
programme dans le dossier jdk / bin.

31
Détails internes du programme Hello Java

Dans la page précédente, nous avons appris le premier programme, comment


compiler et comment exécuter le premier programme java. Ici, nous allons
apprendre, ce qui se passe lors de la compilation et l'exécution du programme
java. En outre, nous allons voir une question basée sur le premier programme.
Que se passe-t-il au moment de la compilation?
Au moment de la compilation, le fichier java est compilé par Java Compiler (il
n'interagit pas avec OS) et convertit le code java en bytecode.

32
Que se passe-t-il à l'exécution?

Au moment de l'exécution, les étapes suivantes sont exécutées:

Classloader: est le sous-système de JVM qui est utilisé pour


charger des fichiers de classe.
Bytecode Verifier: contrôle les fragments de code pour le
code illégal qui peut violer le droit d'accès aux objets.
Interprète: lire le flux de bytecode puis exécuter les
instructions.

33
JDK, JRE and JVM

JVM
JVM (Java Virtual Machine) est une machine abstraite. C'est une spécification qui
fournit un environnement d'exécution dans lequel Java bytecode peut être exécuté.

Les JVM sont disponibles pour de nombreuses plates-formes matérielles et


logicielles. JVM, JRE et JDK dépendent de la plate-forme car la configuration de
chaque OS est différente. Mais, Java est indépendant de la plate-forme.

La JVM exécute les tâches principales suivantes:

▪ Charge le code
▪ Vérifie le code
▪ Exécute le code
▪ Fournit un environnement d'exécution
34
JRE

JRE est un acronyme pour Java Runtime Environment. Il est utilisé pour fournir
runtime environment. Il est la mise en œuvre de JVM. Il existe physiquement. Il
contient un ensemble de bibliothèques + d'autres fichiers utilisés par JVM au
moment de l'exécution.

La mise en œuvre des JVM est également activement diffusée par d'autres
sociétés, outre Sun Micro Systems.

35
JDK

JDK est un acronyme pour Java Development Kit. Il existe physiquement. Il contient
des outils de développement + JRE .

36
Votre premier programme Java

❑ Structure générale du programme "Hello World",


❑ Conventions de codage
❑ Utilisation de commentaires
❑ Utilisation de l'atelier Eclipse

37
public class HelloWorld {

public static void main( String [] args ) {


System.out.println( "Hello World" );
}
} Fichier "HelloWorld.java".

ATTENTION :
D'un certain point de vue, Java est un langage relativement strict.
Une classe publique doit être placée dans un fichier du même nom (nous allons
revenir sur le concept de classe ultérieurement). Du coup, notre premier programme
doit obligatoirement être placé dans un fichier appelé HelloWorld.java.
De même, faites attention aux minuscules et aux majuscules : un simple écart sur un
caractère pourra produire une erreur.
Le langage Java est sensible à la casse (en anglais, case sensitive). Même sur les
noms de fichiers, le compilateur Java cherchera à garantir la bonne utilisation des
minuscules et des majuscules.
38
► L'élément principal de ce programme est la classe.
Une classe est un type de données

Cette classe contient une méthode statique appelée main


public static void main( String [] args )

il s'agit en fait d'une simple fonction, mais comme elle est placée dans une
classe, on parle de méthode. Elle va constituer le point d'entrée de notre
programme (un peu à l'instar des langages C et C++).

Cette méthode ne contient qu'une ligne de code (ligne 04) qui permet de
retrouver l'objet de flux de sortie standard (il est par défaut redirigé vers la
console) à partir du système et de lui demander d'afficher le message
"HelloWorld". Comme ce message est une chaîne de caractères, on la
place entre double guillemets. 39
Conventions de codage:
Le langage Java impose (ou parfois conventionne) un certain nombre de choses
en terme de conventions de codage.
Voici une liste des principales conventions de codage utilisées en Java :

► Une classe publique doit être placée dans un fichier du même nom.
► Un nom de type (classe ou interface, nous y reviendrons) doit commencer par une
majuscule. Ex: HelloWorld.
► Une variable déclarée dans une classe (on parle d'attribut) doit commencer par
une minuscule. Ex: loopCounter.
► Une fonction dans une classe (on parle de méthode) doit aussi s'écrire de la même
manière
► Les constantes s'écrivent en majuscules. On sépare chaque mot par un caractère
_. Ex: PI ou MAX_PRIORITY.

40
Utilisation de commentaires

A titre indicatif, un commentaire permet de placer de l'information au sein


d'un programme. Cette information est non significative au niveau de
l'exécution du programme, mais qui prend tout son sens, en termes de
compréhension, lors de la lecture de ce dernier

41
❑La première méthode (lignes 01 à 04) permet de placer un commentaire sur
plusieurs lignes. Il est donc nécessaire de placer un marqueur de début de
commentaire ainsi qu'un marqueur de fin. La syntaxe étant reprise sur le
langage C, on a donc, pour le marqueur de début, les deux caractères /* et
pour le marqueur de fin les caractères */.

❑La seconde (ligne 10) permet de fixer la fin de la ligne en commentaire, et


uniquement la fin de la ligne courante. Cette dernière solution est, en réalité,
issue du langage C++.

❑Il existe une troisième forme de commentaires : on parle de commentaires


Javadoc. Un commentaire Javadoc commence par /** et se termine par */. Il
est utilisé pour la génération automatique de documentation. Nous
reviendrons ultérieurement sur cette possibilité très intéressante. Si vous
n'utilisez pas l'outil Javadoc, cette forme de commentaire sera traitée par le
compilateur comme un commentaire multi-lignes.
42
Utilisation de l'atelier Eclipse:
Dans l'absolu, vous pouvez coder un programme Java avec un quelconque éditeur
de code (Notepad pourquoi pas).
Néanmoins, l'utilisation d'atelier de développement Java vous permettra d'être
bien plus efficace.
Il existe plusieurs ateliers de développement adaptés à Java.
Parmi eux, citons-en notamment trois : NetBeans, IntelliJ IDEA et Eclipse.
Dans les trois cas, il s'agit d'outils eux même développés en Java.
Ils sont donc diffusés sur différentes plates-formes.
Ils peuvent être enrichis par des fonctionnalités complémentaires par le biais de
plugins.
Ils ont tous les trois une très bonne finition.

43
❑ NetBeans : c'est l'atelier d'Oracle (initialement Sun Microsystems). Il est
gratuit, et vous pouvez le trouver à partir du site http://www.netbeans.org.

❑ IntelliJ IDEA : il est développé par la société JetBrains. Il peut être téléchargé à
l'adresse suivante : https://www.jetbrains.com/idea.

❑ Eclipse : projet open source, initialement mis en place par IBM. Cet outil est
gratuit. Actuellement, c'est un atelier qui séduit un très grand nombre de
développeurs Java. Nous utiliserons cet outil dans ce Cours Java.

44
Commencez par demander la création d'un nouveau projet Java, en cliquant
avec le bouton droit de la souris dans la vue Package Explorer (elle affiche le
contenu du workspace en cours - un workspace étant un regroupement de
projet).

45
Sélectionnez "Java Project" et cliquez sur le bouton "Next >".

46
Ensuite remplissez la boîte de dialogue qui vous est proposée ainsi (nom du projet
Laissez le reste en l'état. Cliquez sur "Finish".

47
Maintenant que le projet est créé, Renseigner la boîte de dialogue afficher en saisissant de
déroulez l'arborescence HelloWorld, nouveau "HelloWorld" pour le nom de la classe et en
et cliquez avec le bouton droit de la prenant soin de cocher la case "public static void main(
souris sur le nom du projet et String [] args)". Cette option vous évitera de taper la
demandez à y ajouter une nouvelle définition de la méthode statique main. Puis cliquez sur
classe. "Finish".

48
Petite astuce : si vous avez oublié de cocher la case pour la présence de la
méthode main, tapez ensuite le mot main dans le code, à l'endroit ou insérer la
méthode, puis tapez simultanément les touches CTRL et ESPACE. Cela vous
permettra de rectifier le tir. Sinon, vous pouvez aussi tout taper à la main.
Enfin, finalisez le code de la méthode main. Une possibilité rapide consiste à
utiliser un template Eclipse (un modèle de code que vous pouvez auto-générer.
Pour ce faire tapez le mot syso entre les accolades de la méthode main. Puis
appuyez de nouveau et simultanément sur les touches CTRL et ESPACE. Une
bonne partie du code sera générée.

49
Notez, comme le montre la capture d'écran ci-dessous, que vous avez pu saisir
des erreurs. Si tel est le cas, une erreur est signalée par des coches rouges
sur différents cotés. Dans l'exemple, un s en minuscule a été tapé en première
lettre du mot System.

Une fois le document complètement édité, pensez à le sauvegarder : pour ce


faire vous pouvez utiliser sur la séquence de touches CTRL+S. 50
Compilation et exécution d'un programme Java
❖ Compilation en mode "ligne de commande"
❖ Lancement en mode "ligne de commande
❖ La même chose via l'atelier Eclipse
Compilation en mode "lignes de commandes"

$> java -version


java version "1.6.0_10-ea"
Java(TM) SE Runtime Environment (build 1.6.0_10-ea-b09)
Java HotSpot(TM) Client VM (build 11.0-b09, mixed mode, sharing)
$>

Pour compiler un programme Java, il faut utiliser la commande javac (Java Compiler). Celle-ci peut être
invoquée sur un fichier ou bien sur un ensemble de fichiers Java

Après compilation, un fichier "HelloWorld.class" a été


$> javac HelloWorld.java généré. Ce fichier est, en simplifiant les choses, constitué
$> javac *.java de deux parties. Une première partie qui contient de
$> métadonnées (des données descriptives) et un seconde
qui contient le code compilé en langage machine pour le
processeur virtuel Java. 51
Lancement en mode "ligne de commande"
Donc, la compilation a produit votre fichier .class qui contient du code en langage
machine pour le processeur virtuel Java. Vous ne pouvez donc pas directement
l'exécuter sur votre processeur. Vous allez donc lancer l'émulateur : la fameuse JVM
(Java Virtual Machine).
Il est a noter une chose importante : un programme Java digne de ce nom est
normalement constitué de plusieurs classes. Chacune d'entre elles peut porter une
méthode main. Vous pouvez normalement démarrer votre programme à partir
d'une quelconque méthode main. C'est pour cela que la JVM attend en paramètre le
nom de la classe de démarrage. Voici comment démarrer votre programme : Si tout
ce passe bien le message "Hello World" devrait être produit sur la console.
ATTENTION : toutes les commandes d'un Java SE, qui
$> javac HelloWorld.java
travaillent sur les fichiers .class (et notamment la
$> java HelloWorld commande java) ne tolèrent pas la présence de
HelloWorld l'extension de fichier. Si vous saisissez java
HelloWorld.class, la JVM recherchera le
$> fichier HelloWorld.class.class et, ne le trouvant pas,
génèrera une erreur. 52
l'atelier Eclipse:
Une des caractéristique très intéressante d’Eclipse est le mode de construction
automatique :
s'il est activé, vous n'avez pas besoin de demander de compiler vos fichiers de
code Java la compilation sera automatiquement réalisée à la sauvegarder de vos
fichiers sources.

Et ce mécanisme va très loin, si le


fichier modifié nécessite (à cause de
dépendances) la recompilation de x
autres fichiers, cela sera bien
entendu fait automatiquement.

53
Pour lancer l'exécution de votre programme, Eclipse propose différentes
techniques (en fonction des habitudes de chacun) : en voici une. La première fois
que vous souhaitez démarrer votre programme sur une classe donnée, cliquez
avec le bouton droit de la souris sur cette dernière. Ensuite, sélectionnez "Run as"
puis "Java Application", comme le montre la capture d'écran ci-dessous.

54
Ensuite, l'atelier se souviendra de la dernière classe démarrée. Il suffira de cliquer
sur l'icône
Si tout ce passe bien, vous pourrez voir le résultat de votre programme dans la
console Eclipse, en bas de l'atelier, comme le montre la capture d'écran suivante.

55
Les types de données en Java

▪ Déclaration de variables
▪ Les types numériques
▪ Le type booléen
▪ Le type caractère
▪ Le type chaîne de caractères
▪ Les classes enveloppantes (Wrapped Classes)
▪ Les tableaux
▪ Les types énumérés

56
Déclaration de variables
Afin de facilement permettre la manipulation de données, les langages de
programmation tels que Java, proposent la notion de variable.

Une variable est un identifiant que vous mémoriserez plus facilement qu'une
adresse en mémoire (même si les deux concepts sont très proches).
Pour ce qui est de la syntaxe de la déclaration d'une variable, elle est relativement
simple
Une déclaration est constituée de deux ou trois parties : premièrement le nom du
type utilisé par la variable, ensuite le nom de la variable à proprement parlé et
enfin sa valeur initiale (cette dernière partie étant facultative).

Si la valeur initiale d'une variable n'est pas compatible avec le type de données
associé à la variable, une erreur de compilation sera produite.

Il est aussi important de noter que la déclaration de la variable se termine


obligatoirement par un caractère ";".
57
Pour information, il est aussi possible de déclarer plusieurs variables à partir d'un même type de
données en une seule ligne. Pour ce faire, il vous suffit de séparer chaque nom de variable par une
virgule. 58
Les types numériques
On peut distinguer les types numériques en deux grandes catégories :
les types entiers et les types décimaux.
Cependant, pour chacune de ces deux catégories, il existe plusieurs types : la différence
majeure résidera dans la taille mémoire utilisée par une donnée. De manière générale, on
peut utiliser le bit pour exprimer une taille mémoire. Un bit ne peut prendre que deux valeurs
(0 ou 1). En conséquence, n bits permet de stoker une valeur parmi 2n valeurs distinctes. On
regroupe traditionnellement (c'est lié à des aspects électroniques) les bits par groupe de
huit, ce qui forme un octet (byte en anglais). Un octet peut donc contenir 28 (soit 256)
valeurs distinctes.
Les types numériques entiers
Il existe quatre types entiers en Java,
Le tableau ci-dessous présente les caractéristiques de chaque type entier.

byte short int long


Taille (bits) 8 16 32 64
Etendue des -32768 ..
-128 .. 127 -231 .. 231-1 -263 .. 263-1
valeurs 32767
59
Les types numériques flottants
Vous avez le choix entre deux types numériques flottants : float et double. Encore une fois c'est la
taille des variables qui changera en fonction du type de données que vous aurez choisi. Le tableau
ci-dessous présente ces deux types de données.

float double
Size (bits) 32 64
Exemple de valeurs 3.25f 3.25

Tout comme pour les types entiers, certaines syntaxes vous sont permises pour spécifier
vos valeurs : notation exponentielle, spécification d'une valeur de type float,
...ATTENTION : par défaut, une valeur flottante est considérée comme étant de
type double. Il ne faudra donc pas oublier d'utiliser le caractère f en fin de valeur si vous
désirez la typée en float. Voici encore une fois un petit exemple.

60
Voici un petit exemple.

61
Le type booléen

On introduit une variable de ce type par le mot clé boolean. Ce type accepte seulement deux
états : l'un est nommé true et symbolise un état d'acceptation, l'autre, nommé false, symbolise
un état de refus.

01 public class TestBoolean {


02
03 public static void main( String [] args ) {
04
05 boolean debugMode = true;
06
07 System.out.println( "Normal print" );
08
09 if ( debugMode ) { System.out.println( "Debug print" );
11 }
12
13 System.out.println( "Normal print" );
14
15 }
16
17
} 62
Le type caractère
Ce type, introduit par le mot clé char, permet la gestion des caractères (comme son nom
le laisse présager).
Syntaxiquement parlant, une donnée de type caractère, se place entre deux simples
quottes. Certains autres caractères spéciaux peuvent être accédés via des séquences
d'échappement particulières (reprise du langage C). Ainsi, \n représentera un retour à la ligne
et \t une tabulation. L'exemple suivant vous montre comment utiliser des caractères dans un
code Java (notez bien que la méthode println force implicitement un passage à la ligne).
public class TestCharacters {
02
03 public static void main( String [] args ) {
04
05 char aChar = 'a';
06 char aCharUnicode = '\u0061'; // valeur 97
07
08 char newLineChar = '\n';
09 char tabChar = '\t';
10
11 System.out.println( "Un caractère " + aChar );
12 System.out.println( "Le même caractère " + aCharUnicode );
13 System.out.println( "Part1" + tabChar + "Part2" + newLineChar + "Part3" );
14
15 }
63
17 }
Le type chaîne de caractères

Contrairement aux types précédents, qui sont ce que l'on appelle des types primitifs, une
chaîne de caractère est représenté par le type String, qui, en vérité, est ce que l'on appelle
une classe (nous reviendrons ultérieurement sur ce concept). Pour l'heure, notez
simplement qu'en conséquence, le type String commence par une majuscule
(contrairement aux autres types vus jusqu'à présent). Remarque pour ceux qui connaisse
déjà le concept de classe : la classe String est placée dans le package java.lang.

Une chaîne de caractères utilise bien entendu le standard UNICODE, à l'instar des
caractères. Notez aussi qu'une chaîne de caractères se définie en plaçant son contenu entre
deux doubles quottes. L'utilisation des séquences \u0041 (par exemple), \n, \t, ... est bien
entendu supportée.

Comme le type String est une classe, tout objet (toute chaîne de caractères) de ce type
exposera un ensemble de méthodes (de fonctions) : encore une fois, nous allons revenir
ultérieurement sur ce concept. Néanmoins, l'exemple de code suivant vous montre comment
tirer profit de certaines de ces méthodes.

64
65
Les classes enveloppantes (Wrapped Classes)

Java est un langage totalement objet : il en résulte que la notion de fonction


n'existe pas en tant que telle. A la place, Java vous propose de coder des
méthodes (statique ou non) : une méthode étant, en quelques sorte, une
fonction, mais obligatoirement portée par une classe. Il n'existe donc pas,
en Java, de fonctions travaillant sur les types primitifs, comme cela peut
être le cas dans d’autre langages : à titre d'exemple le langage C fournit la
fonction atoi (Ascii TO Integer) pour transformer une chaîne en un nombre
entier. A la place il va nous falloir trouver des méthodes.

A l'instar de la classe java.lang.String (cette notation indique que l'on parle


de la classe String localisée dans le package java.lang, le
package java.lang propose d'autres classes associées au types primitifs :
on parle de classes enveloppante (ou de Wrapped Classes en anglais).
Il existe une classe enveloppante par type primitif : chacune d'elle
proposant un ensemble de méthodes permettant divers traitements
66
relatifs au type primitif associé.
L'exemple ci-dessous vous montre comment transformer une chaîne de caractères en
une valeur numérique (pour peu que la chaîne contienne bien un texte équivalent à une
valeur numérique).

01 public class TestWrapper {


02
03 public static void main( String [] args ) {
04
05 String strFirstValue = "10";
06 String strSecondValue = "11";
07
08 // Doit afficher la chaîne 1011 (concaténation)
09 System.out.println( strFirstValue + strSecondValue );
10
11 int iFirstValue = Integer.parseInt( strFirstValue );
12 int iSecondValue = Integer.parseInt( strSecondValue );
13
14 // Doit afficher la valeur entière 21
15 System.out.println( iFirstValue + iSecondValue );
16
17 }
18
19 } 67
Les tableaux

Bien entendu, Java permet lui aussi d'utiliser les tableaux. Un tableau est
un ensemble d'éléments d'un même type : par exemple, un tableau
d'entiers, un tableau de chaînes de caractères, ... En fait, depuis notre
premier exemple de code Java, nous avions introduit le concept de tableau.
Effectivement, tout programme Java peut être lancé à partir de la ligne de
commande et peut donc accepter un certain nombre d'arguments. La
méthode statique main prend en paramètre en tableau de chaînes de
caractères appelé args : il correspond à l'ensemble des arguments fournis
sur la ligne de commande.
Pour introduire une variable de type tableau il vous faut utiliser la syntaxe [].
Néanmoins les crochets peuvent être placés à différents endroits.

Le tableau ci-dessus vous propose quelques exemples de définition de


tableaux Java.
68
Définition de tableau Explications complémentaires
int [] tb; Définit un tableau d'entiers non encore initialisé.
Définit un tableau de dix entiers. Il n'est plus possible de
int [] tb = new int[10];
changer la taille de ce tableau.
Comme les crochets sont placés à gauche des noms de
variables ils s'appliquent à toutes ces variables. On est donc
int [] tb1, tb2;
en train de définir deux tableaux d'entiers, tous deux non
initialisés.
int [] tb1 = new int[5], tb2 = new Définit un premier tableau de cinq entiers, puis un second
int[10]; de dix entiers.
Définit un tableau de dix entiers ainsi qu'une variable
(value) de type entier. Les crochets ne s'appliquent
int tb[] = new int[10], value = 10;
uniquement qu'à tb car ils sont placés à la droite du nom de
la variable.
Définit un tableau pouvant contenir jusqu'à cinq chaînes de
String [] strValues = new String[5];
caractères.
String [] strValues = { "toto", "titi", Définit un tableau de chaînes de caractères contenant les
"tata" }; trois valeurs stockées entre les accolades. 69
Il est possible de connaître la taille d'un tableau à n'importe quel moment.
Pour ce faire il faut demander au tableau la valeur de son
attribut length (la notion d'attribut sera présentée plus sérieusement dans
les chapitres relatifs à la programmation orientée objet).

Le programme ci-dessous vous permettra de vous familiariser avec


l'utilisation des tableaux.

Il est constitué de deux parties. La première affiche la liste des arguments du


programme qui auront étaient fournis sur la ligne de commande (lancez le
programme à partir de la console ainsi : java TestArrays arg1 arg2 suite). La
seconde partie créer un tableau contenant les carrés des valeurs comprises entre
0 et 9 puis affiche ces valeurs.

70
71
Les types énumérés
En premier lieu, il faut savoir une chose importante : les types énumérés en Java n'existent
pas depuis les premières versions du langage : ils sont arrivés avec la version Java SE
5.0.
Un type énuméré ressemble, d'un certain point de vue, au type booléen de par le fait qu'il
accepte un nombre d'état restreint. Néanmoins, avec un type énuméré, c'est vous qui
choisissez les états acceptés par le type. Voici un petit exemple d'utilisation d'un type
énuméré.

72
Les opérateurs Java

❑ Les opérateurs de transtypage (cast operators)


❑ Les opérateurs arithmétiques
❑ Les opérateurs bit à bit
❑ Les opérateurs logiques
❑ Les opérateurs de comparaisons
❑ Les opérateurs d'affectations
❑ Les opérateurs travaillant sur les chaînes de caractères
❑ Les autres opérateurs Java
❑ La table de précédence des opérateurs Java

73
Vos programmes Java vont, logiquement, calculer un certain nombre d'expressions.
Une expression est constituée d'opérateurs et d'opérandes. Ainsi l'expression 3 + 4 est
basée sur l'opérateur + et mais en jeux les opérandes 3 et 4. Le résultat de cette
expression (très simple) valant bien entendu 7.
Comme nous allons le voir, le langage Java propose un très grand nombre d'opérateurs :
ils sont, en très grosse partie, récupérés du langage de programmation C. Nous allons
tout au long de ce chapitre présenter l'utilisation des principaux opérateurs de langage à
grand renfort d'exemples de code Java.

Les opérateurs de transtypage (cast operators)

Les opérateurs de transtypage (cast). Permettent de transformer une donnée d'un


type en une donnée d'un autre type. On peut utiliser des opérateurs de cast explicites
ou implicites, selon qu'il y ait ou non, une perte d'information durant la transformation.
Par exemple si vous cherchez à transformer un double en un float, on passe d'un type
plus précis à un type moins précis : l'utilisation d'un cast implicite est donc obligatoire
pour confirmer l'éventuelle perte de précision. Dans l'autre sens, le cast est implicite
(vous pouvez néanmoins explicitement l'écrire).
74
Syntaxiquement parlant, on reconnait un operateur de cast par le fait qu'il est
obligatoirement parenthésé et que sont nom est obligatoirement un nom de type.

75
Les opérateurs arithmétiques
Les opérateurs arithmétiques permettent, bien entendu, de constituer des
expressions arithmétiques. Ces opérateurs sont quasiment utilisant sur tous les
types numériques (byte, short, int, long, float et double).
Ces opérateurs sont au nombre de cinq :
+(pour l'addition),
- (pour la soustraction),
*(pour la multiplication),
/ (pour la division) et
% (pour le reste de la division entière).

L'exemple qui suit vous montre quelques exemples d'utilisations des opérateurs
arithmétiques.

76
77
Méfiez-vous néanmoins des opérateurs / et % : leur comportement dépend que l'on travaille sur
des types entiers ou des types flottants. Effectivement, une source d'erreur classique est la suivante
: l'opérateur /, s'il est invoqué avec deux entiers renverra, obligatoirement, une valeur entière.
L'exemple ci-dessous vous mets face à la problématique.

78
Si vous mixez deux types distincts lors de l'utilisation d'un opérateur arithmétique, c'est toujours
le type le plus large qui l'emporte : 3 + 3.6 calcule une valeur de type double et non entière.

79
Les opérateurs logiques

Les opérateurs logiques acceptent obligatoirement des opérandes booléennes et calculent un


résultat booléen. Ils sont très fortement utilisés dans instructions de tests (if ou switch) et dans les
instructions de boucles (notamment pour terminer une boucle). Ils sont au nombre de trois : && (le
et logique), || (pour le ou logique) et le ! (pour le non logique).

80
Les opérateurs de comparaisons

Les opérateurs de comparaisons permettent, comme vous vous en doutez, de réaliser


des comparaisons entre des données. Il y a six opérateurs de comparaison : == (pour le
test d'égalité), != (pour le test de non-égalité), <= (pour le test d'infériorité), < (pour le
test d'infériorité stricte), >= (pour le test de supériorité) et enfin > (pour le test de
supériorité stricte).

Voici un petit exemple d'utilisation de ces opérateurs.

81
82
Les opérateurs d'affectations
Voici les opérateurs d'affectation pris en charge par le langage Java -

Op. Explications complémentaires


Opérateur d'affectation simple. Affecte les valeurs des opérandes du côté droit à
=
l'opérande du côté gauche. C = A + B assignera la valeur de A + B en C
Ex: a += 2; équivaut quasiment à a = a + 2; (Il ajoute l'opérande droit à l'opérande gau
+=
et affecte le résultat à l'opérande gauche.)
-= Ex: a -= 2; équivaut quasiment à a = a - 2;
*= Ex: a *= 2; équivaut quasiment à a = a * 2;
/= Ex: a /= 2; équivaut quasiment à a = a / 2;
%= Ex: a %= 2; équivaut quasiment à a = a % 2;
&= Ex: a &= 2; équivaut quasiment à a = a & 2;
|= Ex: a |= 2; équivaut quasiment à a = a | 2;
^= Ex: a ^= 2; équivaut quasiment à a = a ^ 2;
++ Ex: a++; équivaut quasiment à a = a + 1;
-- Ex: a--; équivaut quasiment à a = a - 1; 83
En ligne 07, plusieurs
affectation sont cascadées
: l'ordre d'associativité de
l'opérateur est de la droite
vers la gauche (on affecte 1
à e - le résultat est 1 que
l'on affecte à d - et ainsi de
suite ...).

En ligne 14, on affecte une


valeur à une position d'un
tableau : le résultat de
cette affectation est encore
une fois la valeur affectée.
Du coup, on se sert de
cette valeur pour calculer
la condition de sortie de la
boucle while.
84
85
Les opérateurs travaillant sur les chaînes de caractères

Deux opérateurs déjà présentés dans ce document peuvent aussi être utilisé avec
des chaînes de caractères ; il s'agit des opérateurs + et +=. Dans ce cas ils
n'effectueront pas d'additions, mais bien des concaténations de chaînes de
caractères.

86
Les autres opérateurs Java

Op. Explications complémentaires


Cet opérateur permet d'allouer dans le tas (le heap, en anglais) un bloc
new de mémoire : il retourne une référence (un pointeur) sur le bloc de
mémoire alloué.
[] Cet opérateur permet notamment d'accéder aux éléments d'un tableau.
Opérateur de travers : il est utilisé pour accéder aux champs (attributs et
.
méthodes) des objets. Par exemple : "string".toUpperCase().
Opérateur conditionnel (c'est le seul opérateur acceptant trois
opérandes en Java). Il permet de renvoyer une expression ou un autre
?:
en fonction du résultat d'une troisième expression. Sa syntaxe est la
suivante : expTest ? expThen : expElse.
Permet de tester si un objet est compatible avec un type de données
instanceof particulier. Cet opérateur tient compte du polymorphisme (nous y
reviendrons ultérieurement). 87
public class TestOperators {

public static int min( int a, int b ) {


return a <= b ? a : b;
}

public static void main( String [] args ) {

// Test de l'opérateur conditionnel


System.out.println( "min(3, 4) == " + min( 3, 4 ) );

// Test de l'opérateur instanceof


Object ptr = args; // Par polymorphisme (on verra plus tard)
System.out.println( ptr instanceof String );

ptr = "toto";
System.out.println( ptr instanceof String );

}
}
88
La table de précédence des opérateurs Java
Comme vous l'avez certainement déjà remarqué, il est possible de se servir de parenthèses pour
fixer l'ordre d'évaluation des sous-expressions formant une expression Java. Ainsi, les expressions
3*2+4 et 3*(2+4) n'auront pas les mêmes valeurs (10 et 18). Mais attention tout de même :
l'utilisation abusive des parenthèses rend très rapidement un code illisible. Dans le but de ne pas
arriver dans de telles situations, sachez que des règles de priorités ont étaient définies sur les
opérateurs. Le tableau suivant fixe cet ordre : du plus prioritaire au moins prioritaire.
[].
! ++ --
*/%
+-
<< >>
== != < <= > >=
&
^
|
&&
||
?:
89
= += -= *= /= %= <<= >>= &= ^= |=
Les Structures conditionnelles

90
Les instructions du langage Java
Dans le chapitre précédent, nous avons vu ce qu'étaient les expressions : celles-ci
permettent de calculer des valeurs. Parallèlement, nous avons les instructions
(statements en anglais) qui permettent de lancer des actions. En composant les
instructions on défini ainsi le comportement que le programme devra adopter.
Pour mieux comprendre les choses, nous allons, tout au long de ce chapitre,
étudier une à une toutes les instructions utilisables en Java.
Premier point de syntaxe : toute instruction se termine par un point-virgule.
Attention, il ne s'agit pas d'un séparateur, mais bien d'un terminateur d'instruction
: même la dernière instruction d'un bloc doit être terminée par ce caractère.

Les blocs d'instructions


Comme son nom le laisse présager, le bloc d'instructions peut contenir plusieurs
instructions (il peut aussi en contenir qu'une unique). Le bloc commence par une
accolade ouvrante et se termine par une accolade fermante «} » .
91
L'exemple ci-dessous montre un bloc d'instructions vous demandant de
saisir votre nom. La seconde instruction du bloc permet de capturer dans
une variable de type chaîne de caractères, la valeur que vous aurez saisi à
partir du clavier. Enfin, la troisième instruction permet d'afficher la valeur
saisie sur la console. Notez bien que chaque instruction est terminée,
comme nous venons de le dire précédemment par un point virgule. Si vous
ne respectez pas cette règle, une erreur de compilation vous sera
retournée.

{
System.out.print( "Veuillez renseigner votre nom : " );
String nom = System.console().readline();
System.out.println( "Votre nom est : " + nom );
}

92
L'instruction IF

L'instruction if permet de déclencher des traitements en fonction du résultat


calculé par une expression de test. Contrairement à certains langages (Pascal
notamment), il n'y a pas de mot clé then utilisé en Java. Du coup, pour séparer la
condition du code à exécuter, il faut complétement parenthéser la condition (si
vous ne respectez pas cette règle, une erreur vous sera retournée). Vous pouvez
passer un bloc d'instruction à exécuter dans le cas ou la condition est vrai. Vous
pouvez aussi, mais cela est facultatif, passer un bloc d'instructions à exécuter dans
le cas ou la condition est fausse. Dans ce cas, séparer les deux blocs d'instruction
via le mot clé else. Voici quelques exemples d'utilisation de l'instruction if.

93
// Un exemple sans partie else
System.out.print( "Veuillez saisir une valeur : ");
int a = Integer.parseInt( System.console().readLine() );
if ( a < 0 ) {
System.out.println( "La valeur est négative" );
}

// Un exemple avec une partie else


System.out.print( "Veuillez saisir une valeur : ");
int a = Integer.parseInt( System.console().readLine() );
if ( a < 0 ) {
System.out.println( "La valeur est négative" );
} else {
System.out.println( "La valeur est positive" );
}

94
Notez un point de syntaxe, que nous ne recommandons néanmoins pas !
Mais il est possible, et ce pour les deux blocs d'instructions portés par le
if et le else, de ne pas utiliser les caractères { et } dès lors qu'il y a qu'une
unique instruction par bloc. Ainsi, le code proposé ci-dessus pourrait
aussi s'écrire :
System.out.print( "Veuillez saisir une valeur : ");
int a = Integer.parseInt( System.console().readLine() );
if ( a < 0 )
System.out.println( "La valeur est négative" );
else
System.out.println( "La valeur est positive" );

Mais si une deuxième instruction doit être ajoutée au if ou au else, les


accolades redeviennent obligatoire (Sans quoi des erreurs de compilations, ou
pire, d'exécution, peuvent en résulter). En conséquence, et pour plus
d'évolutivité, nous vous conseillons de toujours mettre les accolades. Notez
aussi que l'utilisation des tabulations (retrait sur la droite) est importante pour
une meilleure assimilation des lignes de code proposées. Néanmoins, si vous
n'utilisez pas de tabulations, le code s'exécutera tout aussi bien. 95
L'instruction switch

L'instruction switch permet elle aussi de déclencher des traitements en fonction


d'une condition (d'un test). D'un certain point de vue, cette instruction est
similaire à plusieurs if imbriqués. Néanmoins les performances sont souvent
meilleures avec un switch (un tableau de pointeurs d'adresses de code à
exécuter est calculé une fois pour toute). Du moins s'il y a plus de deux cas
distincts.

La sélection du bloc d'instruction à exécuter s'effectue grâce à la valeur d'une


expression. Cette expression doit calculer une valeur dont le type fait partie de
la liste suivante : byte, short, int, long ou type énumérés. Notez qu'une valeur de
type boolean n'est pas autorisée. Notez aussi que le bloc d'instruction à
exécuter ne nécessite pas d'accolades.

96
L'utilisation de l'instruction switch est souvent couplée à l'instruction break.
Effectivement, si un bloc d'instructions est exécuté et si celui-ci ne se termine pas
par l'instruction break, alors l'exécution du bloc suivant (dans l'ordre de
déclaration) sera lancé et ainsi de suite. Cela est pratique pour définir un même
traitement pour plusieurs cas. Voici un petit exemple d'utilisation d'un switch.

97
public class TestStatements {

public static void main( String[] args ) {

for( int i = 0; i < 10; i++ ) {


switch( i ) {
case 9:
System.out.println( "Neuf" );
break;
case 8:
System.out.print( "Huit" );
System.out.println( "" );
break;
case 7:
System.out.print( "Sept" );
System.out.println( "" );
break;
case 6:
System.out.print( "Six " );
case 5:
System.out.println( "Cinq" );
break;
case 4:
case 3:
System.out.print( "Quatre Trois " );
case 2:
System.out.println( "Deux" );
break;
case 1:
System.out.println( "Un" );
break;
default:
System.out.println( "Zero" );
break;
}
98
}
Les instructions liées aux boucles
Les boucles sont des structures qui permettent d'exécuter plusieurs fois la même série
d'instructions jusqu'à ce qu'une condition ne soit plus réalisée...
On appelle parfois ces structures instructions répétitives ou bien itérations.
La façon la plus commune de faire une boucle, est de créer un compteur (une variable qui
s'incrémente, c'est-à-dire qui augmente de 1 à chaque tour de boucle) et de faire arrêter la
boucle lorsque le compteur dépasse une certaine valeur.

La boucle for
L'instruction for permet d'exécuter plusieurs fois la même série d'instructions: c'est une boucle !
Dans sa syntaxe, il suffit de préciser le nom de la variable qui sert de compteur (et
éventuellement sa valeur de départ, la condition sur la variable pour laquelle la boucle s'arrête
(basiquement une condition qui teste si la valeur du compteur dépasse une limite) et enfin une
instruction qui incrémente (ou décrémente) le compteur.
La syntaxe de cette expression est la suivante :

for (compteur; condition; modification du compteur) {


liste d'instructions
} 99
Par exemple :
int i;
for (i=1; i<6; i++) {
System.out.println(i);
}

Cette boucle affiche 5 fois la valeur de i, c'est-à-dire 1, 2, 3, 4, 5


Elle commence à i=1, vérifie que i est bien inférieur à 6, etc... jusqu'à atteindre la valeur
i=6, pour laquelle la condition ne sera plus réalisée, la boucle s'interrompra et le
programme continuera son cours.

Remarque : Java autorise la déclaration de la variable de boucle dans l'instruction for elle-
même. On peut même déclarer d'autres variables en même temps, par exemple pour définir
la condition d'arrêt :

for (int i=0, n=10; i<n; i++) {


System.out.println(i);
}

100
Remarques :

❑il faut toujours s'assurer que la boucle s'arrête bien à un moment


❑une instruction d'affichage System.out.println(); dans votre boucle est
un bon moyen pour vérifier la valeur du compteur pas à pas en
l'affichant !
❑il faut bien compter le nombre de fois que l'on veut faire exécuter la
boucle:
• for(i=0; i<10; i++) exécute 10 fois la boucle (i de 0 à 9)
• for(i=0; i<=10; i++) exécute 11 fois la boucle (i de 0 à 10)
• for(i=1; i<10; i++) exécute 9 fois la boucle (i de 1 à 9)
• for(i=1; i<=10; i++) exécute 10 fois la boucle (i de 1 à 10)

101
La boucle while

La boucle while représente un autre moyen d'exécuter plusieurs fois la même série
d'instructions.

La syntaxe est la suivante :

while (condition réalisée) {


liste d'instructions
}

Cette instruction exécute la liste d'instructions tant que (while est un mot anglais qui
signifie tant que) la condition est réalisée.
La condition de sortie pouvant être n'importe quelle condition, il est souvent moins aisé
de savoir si la boucle s'arrête, mais il est important de toujours s'en assurer.

102
Exemple : somme des dix premiers entiers positifs

Fichier "TenCounter.java"

public class TenCounter {


public static void main(String args[]){
int somme=0, indice=1;

while(indice<=10) somme += indice++;

String str = "La somme des dix premiers entiers positifs est : ";
System.out.println(str + somme);
}
}

103
La boucle do while

La boucle do while est une variante de la boucle while, où la condition d'arrêt est testée
après que les instructions aient été exécutées.

La syntaxe est la suivante :

do {
liste d'instructions
} while (condition réalisée);

104
Exemple : un programme calculant la somme des dix premiers entiers positifs.

Fichier "TenCounter.java"

public class TenCounter {


public static void main(String args[]){
int somme=0, indice=1;

do
somme+=indice++;
while(indice<=10);

String str = "La somme des dix premiers entiers positifs est : ";
System.out.println(str + somme);
}
}

Attention : n'oubliez pas de mettre un point-virgule après la condition de la boucle do


while, mais n'en mettez surtout pas à une boucle for ou à une boucle while.
105
La boucle for each:
La boucle for each n'est pas une boucle comparable aux trois précédentes, car elle
s'utilise dans un cadre très particulier, lorsqu'il faut itérer les différents éléments d'un
ensemble (un tableau, une liste etc...).
La syntaxe est la suivante :
for (type variable : ensemble) {
instructions
}
Par exemple pour afficher tous les éléments d'un tableau d'entiers, ces deux codes sont
équivalents :
for (int i=0, n=tableau.length; i<n; i++)
System.out.println(tableau[i]);

for (int e : tableau)


System.out.println(e);
Dans le premier code on itérait les indices du tableau, alors que dans le deuxième, on itère
directement sur les éléments du tableau. 106
Remarques

▪ Dans la majorité des cas où elle peut s'utiliser, la boucle for each est plus
rapide qu'une boucle for.
▪ On a ici un contrôle moindre sur l'ordre des éléments, mais Java assure que tous
les éléments seront utilisés (on a pas à compter soi même le nombre
d'éléments) et qu'ils seront pris "dans l'ordre" (lorsque cet ordre existe).

107
Saut inconditionnel

Il peut être nécessaire de faire sauter une ou plusieurs valeurs à la boucle sans pour
autant mettre fin à celle-ci.
La syntaxe de cette expression est "continue;" (cette instruction se place dans la boucle),
on l'associe généralement à une structure conditionnelle, sinon les lignes situées entre
cette instruction et la fin de la boucle seraient obsolètes.

Exemple :

Imaginons que l'on veuille imprimer pour x allant de 1 à 10 la valeur de 1/(x-7) ... il est
évident que pour x=7 il y aura une erreur. Heureusement, grâce à l'instruction continue
il est possible de traiter cette valeur à part puis de continuer la boucle !

108
x=1;

for (int x=0; x<=10; x++) {


if (x == 7) {
System.out.println("Division par zéro!");
continue;
}

double a = 1.0/(x-7);
System.out.println(a);
}

109
Arrêt inconditionnel
A l'inverse, il peut être voulu d'arrêter prématurément la boucle, pour une autre conditon
que celle précisée dans l'en-tête de la boucle. L'instruction break permet d'arrêter une
boucle (for ou bien while). Il s'agit, tout comme continue, de l'associer à une structure
conditionnelle, sans laquelle la boucle ne ferait jamais plus d'un tour !
Dans l'exemple de tout à l'heure, par exemple si l'on ne savait pas à quel moment le
dénominateur (x-7) s'annule (bon...OK...pour des équations plus compliquées par exemple)
il serait possible de faire arrêter la boucle en cas d'annulation du dénominateur, pour éviter
une division par zéro!
for (int x=1; x<=10; x++) {
a = x-7;

if (a == 0) {
System.out.println("division par 0");
break;
}
System.out.println(1.0/a);
}
110

Vous aimerez peut-être aussi