achref el mouelhi - lis-lab.fr · java 7 (sortie en 2011, nommee´ dolphin) : stringdans switch...
TRANSCRIPT
Java : introduction
Achref El Mouelhi
Docteur de l’universite d’Aix-MarseilleChercheur en programmation par contrainte (IA)
Ingenieur en genie logiciel
H & H: Research and Training 1 / 90
Plan
1 Introduction
2 Avant de commencer
3 Un premier projet Java
4 Les variablesTypage statiqueTypage dynamique
5 Les operations sur les variables
6 La lecture d’une saisie
H & H: Research and Training 2 / 90
Plan
7 Les conditions et les bouclesifif ... elseif ... else if ... elseswitchExpression ternairewhiledo ... whilefor
8 Les tableaux
9 Les constantes
10 Les methodes
H & H: Research and Training 3 / 90
c© Achref EL MOUELHI c©
Introduction
Java
Java?
langage de programmation
oriente objet
fortement type
presente officiellement en 1995 par Sun Microsystems (rachatpar Oracle Corporation le 20 avril 2009)
syntaxe tres proche du C (procedural) et C++ (procedural, orienteobjet)
AttentionJava 6= JavaScript
H & H: Research and Training 4 / 90
c© Achref EL MOUELHI c©
Introduction
Java
Java?
langage de programmation
oriente objet
fortement type
presente officiellement en 1995 par Sun Microsystems (rachatpar Oracle Corporation le 20 avril 2009)
syntaxe tres proche du C (procedural) et C++ (procedural, orienteobjet)
AttentionJava 6= JavaScript
H & H: Research and Training 4 / 90
c© Achref EL MOUELHI c©
Introduction
Java, pourquoi ?
Langage de haut niveau (pas de gestion de memoire, pas d’allocationdynamique, pas de pointeur... comme en C et C++)
Disposant d’une bonne documentation, des supports videos, plusieurs exemplessur internet
Enorme communaute : un des langages les plus utilises dans le monde(https://www.tiobe.com/tiobe-index/)
Permettant de developper des programmes :
robustes
securises et fiables
bien structures et maintenables
portables : Windows, Mac OS, Linux (Write once, run everywhere ou Ecrireune fois, executer partout)
...
H & H: Research and Training 5 / 90
c© Achref EL MOUELHI c©
Introduction
Java
Quel type d’application?
applications consoles (JSE)
applications du bureau (Client lourd avec Swing)
applications web (JEE)
applications mobiles
web services (Jersey...)
jeux...
H & H: Research and Training 6 / 90
c© Achref EL MOUELHI c©
Introduction
JavaQuelques versions de Java (les plus importantes)
Java 1 (sortie en 1996)
Java 2 (sortie en 1998, nommee Playground) : Swing + collection
Java 4 (sortie en 2002, nommee Merlin) : expressions regulieres + parser XML (JAXP)
Java 5 (sortie en 2004, nommee Tiger) : genericite, annotation + enumerations + plusbesoin de convertir les types wrappers en primitifs (et inversement)
Java 6 (sortie en 2006, nommee Mustang) : JAX-WS (Web services REST)
Java 7 (sortie en 2011, nommee Dolphin) : String dans switch
Java 8 (sortie en Mars 2014, nommee Spider) : interface fonctionnelle, methode pardefaut, expression Lambda, MapReduce pour les collections
Java 10 (sortie en Mars 2018) : mot-cle var
Java 11 (sortie en Septembre 2018) : simplifier l’execution d’un programme en ligne decommande
Java 12 (sortie en Mars 2019) : simplification de switch et String multi-lignes
H & H: Research and Training 7 / 90
c© Achref EL MOUELHI c©
Introduction
Java
Comment ca fonctionne ?
On ecrit un programme dans un fichier .java
Ensuite, le compilateur genere un fichier .class du meme nom(contenant du bytecode)
Puis, la machine virtuelle execute le bytecode en le traduisant enlangage natif (langage de bas niveau, ce qui assure la portabilited’un programme java)
MyClass.java
compiler
MyClass.classJVM
MyClass
H & H: Research and Training 8 / 90
c© Achref EL MOUELHI c©
Introduction
JavaDe quoi on a besoin (le minimum)?
Un editeur de texte (Bloc-notes, Notepad++, Sublime Text...)
Un kit de developpement (JDK : Java Development Kit)contenant :
Java Runtime Environment (JRE, incluant la machine virtuelle deJava (JVM))
Des librairies (JSE : Java Standard Edition, JEE : Java EnterpriseEdition, JME Java Micro Edition, Swing, JDBC...)
Des commandes permettant la creation, la compilation etl’execution d’un programme Java
javac : pour compiler
java : pour executer
javadoc : pour generer une documentation
jar : pour archiver
H & H: Research and Training 9 / 90
c© Achref EL MOUELHI c©
Introduction
Introduction
JDK : telechargement
https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538.html
H & H: Research and Training 10 / 90
c© Achref EL MOUELHI c©
Introduction
Java
Remarque
Pour lancer un programme en ligne de commande, il faut :
aller dans Panneau de configuration, chercher Systeme etcliquer sur Parametres systemes avances
choisir Variables d’environnement puis dans la zoneVariables utilisateur selectionner Path et cliquer surModifier
cliquer sur Nouveau puis saisir le chemin vers la JDK dans lazone de saisie qui a apparu
valider
H & H: Research and Training 11 / 90
c© Achref EL MOUELHI c©
Introduction
JavaCreons une classe MyClass dans un fichier MyClass.java
public class MyClass {
public static void main(String[] args) {System.out.print("Hello world from console");
}}
MyClass.java
compiler
MyClass.classJVM
MyClass
java MyClass.java [depuis Java 12
H & H: Research and Training 12 / 90
c© Achref EL MOUELHI c©
Introduction
JavaCreons une classe MyClass dans un fichier MyClass.java
public class MyClass {
public static void main(String[] args) {System.out.print("Hello world from console");
}}
MyClass.java
compiler
MyClass.classJVM
MyClass
javac MyClass.java
java MyClass.java [depuis Java 12
H & H: Research and Training 12 / 90
c© Achref EL MOUELHI c©
Introduction
JavaCreons une classe MyClass dans un fichier MyClass.java
public class MyClass {
public static void main(String[] args) {System.out.print("Hello world from console");
}}
MyClass.java
compiler
MyClass.classJVM
MyClass
javac MyClass.java java MyClass.class
java MyClass.java [depuis Java 12
H & H: Research and Training 12 / 90
c© Achref EL MOUELHI c©
Introduction
JavaCreons une classe MyClass dans un fichier MyClass.java
public class MyClass {
public static void main(String[] args) {System.out.print("Hello world from console");
}}
MyClass.java
compiler
MyClass.classJVM
MyClass
javac MyClass.java java MyClass.class
java MyClass.java [depuis Java 11]
H & H: Research and Training 12 / 90
c© Achref EL MOUELHI c©
Introduction
Java
Pour compiler
javac MyClass.java
S’il existe plusieurs versions de JDK sur la machine
javac -target 8 -version 8 MyClass.java
Pour executer (ca affiche Hello world from console)
java MyClass
H & H: Research and Training 13 / 90
c© Achref EL MOUELHI c©
Introduction
Java
Pour compiler
javac MyClass.java
S’il existe plusieurs versions de JDK sur la machine
javac -target 8 -version 8 MyClass.java
Pour executer (ca affiche Hello world from console)
java MyClass
H & H: Research and Training 13 / 90
c© Achref EL MOUELHI c©
Introduction
Java
Pour compiler
javac MyClass.java
S’il existe plusieurs versions de JDK sur la machine
javac -target 8 -version 8 MyClass.java
Pour executer (ca affiche Hello world from console)
java MyClass
H & H: Research and Training 13 / 90
c© Achref EL MOUELHI c©
Introduction
Java
On peut aussi utiliser un IDE (Environnement de developpementintegre)
pour eviter d’utiliser la console et les commandes
car un IDE integre un compilateur lance meme pendant l’ecrituredu code
pour profiter de la coloration syntaxique, l’auto-completion,l’indentation automatique...
pour avoir une bonne structuration du projet
H & H: Research and Training 14 / 90
c© Achref EL MOUELHI c©
Introduction
Java
Exemple d’IDE pour Java
Eclipse
Netbeans
JDeveloper
IntelliJ IDEA
JBuilder
JCreator...
...
H & H: Research and Training 15 / 90
c© Achref EL MOUELHI c©
Introduction
Java
Eclipse, pourquoi?
open-source
ecrit en Java
multi-langage : Java, C++, PHP, Cobol, C#, JavaScript...
H & H: Research and Training 16 / 90
c© Achref EL MOUELHI c©
Introduction
Introduction
Eclipse : telechargement
https://www.eclipse.org/downloads/download.php?file=/oomph/epp/2020-06/R/eclipse-inst-win64.exe
H & H: Research and Training 17 / 90
c© Achref EL MOUELHI c©
Introduction
Introduction
Editeur Java en ligne
https://www.jdoodle.com/online-java-compiler/
H & H: Research and Training 18 / 90
c© Achref EL MOUELHI c©
Introduction
Java
H & H: Research and Training 19 / 90
c© Achref EL MOUELHI c©
Introduction
Java
H & H: Research and Training 19 / 90
c© Achref EL MOUELHI c©
Avant de commencer
Java
Les regles de nommage en Java
Pour les classes et les fichiers : Le Pascal case
Pour les variables, les objets et les methodes : Le Camel case
Pour les noms de projets : Le Kebab case
Pour plus de detailshttps://wprock.fr/blog/conventions-nommage-programmation/
H & H: Research and Training 20 / 90
c© Achref EL MOUELHI c©
Avant de commencer
Java
Les regles de nommage en Java
Pour les classes et les fichiers : Le Pascal case
Pour les variables, les objets et les methodes : Le Camel case
Pour les noms de projets : Le Kebab case
Pour plus de detailshttps://wprock.fr/blog/conventions-nommage-programmation/
H & H: Research and Training 20 / 90
c© Achref EL MOUELHI c©
Avant de commencer
Java
Les instructions
Chaque instruction se termine par ;
Il est possible d’ecrire plusieurs instructions sur une meme ligne(mais ce n’est pas une bonne pratique)
Eclipse nous facilite le formatage et l’indentation du code avec leraccourci CTRL + Shift + F
H & H: Research and Training 21 / 90
c© Achref EL MOUELHI c©
Avant de commencer
Java
Comment organiser un projet Java?
Une classe par fichier
Organiser les classes par package selon la semantique
Une classe ne peut etre definie dans plusieurs fichiers (pas declasse partielle en Java)
Il est possible de creer deux classes avec le meme nom dansdeux packages differents
H & H: Research and Training 22 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Comment creer un projet sous Eclipse?
Aller dans File > New > Java Project
Remplir le champ Project name: avec cours-introductionpuis cliquer sur Next
Decocher la case Create module-info.java file puiscliquer sur Finish
Que contient ce projet ?
JRE System Library : l’ensemble de .jar indispensable pourle lancement du projet
src : le repertoire qui contiendra les fichiers sources (les classes)
H & H: Research and Training 23 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Comment creer un projet sous Eclipse?
Aller dans File > New > Java Project
Remplir le champ Project name: avec cours-introductionpuis cliquer sur Next
Decocher la case Create module-info.java file puiscliquer sur Finish
Que contient ce projet ?
JRE System Library : l’ensemble de .jar indispensable pourle lancement du projet
src : le repertoire qui contiendra les fichiers sources (les classes)
H & H: Research and Training 23 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Comment creer une classe?
Aller dans File > New > Class
Dans Package, saisir org.eclipse.classes
Dans Class, saisir FirstClass
Cocher la case public static void main (String[]args)
Cliquer sur Finish
Remarque
Si on a un package, on peut le selectionner au moment de la creationde la classe
H & H: Research and Training 24 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Comment creer une classe?
Aller dans File > New > Class
Dans Package, saisir org.eclipse.classes
Dans Class, saisir FirstClass
Cocher la case public static void main (String[]args)
Cliquer sur Finish
Remarque
Si on a un package, on peut le selectionner au moment de la creationde la classe
H & H: Research and Training 24 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Comment creer un package?
Aller dans File > New > Package
Saisir le nom du package et valider
H & H: Research and Training 25 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Contenu de la classe FirstClass
package org.eclipse.classes;
public class FirstClass {
public static void main(String[] args) {// TODO Auto-generated method stub
}
}
H & H: Research and Training 26 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Explication
En java, et contrairement a plusieurs langages OO comme C++,C#, PHP..., on ne peut ecrire une instruction en dehors d’une(methode de) classe.
En java, un fichier contient une seule classe et une classe ne peutetre declaree dans plusieurs fichiers (contrairement a C#)
La premiere ligne package org.eclipse.classes nousinforme que la classe actuelle se situe danssrc/org/eclipse/classes dans un repertoirecours-introduction situe dans le work-space d’Eclipse
Dans un projet Java, il faut qu’au moins une classe contienne lamethode public static void main(String[] args) :point d’entree du projet
H & H: Research and Training 27 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Les commentaires
Trois types de commentaires
Commentaire mono-ligne
// ceci est un commentaire sur une seule ligne
Commentaire sur plusieurs lignes
/* ceci est uncommentairesur trois lignes */
Commentaire pour documentation
/**@author Achref El Mouelhi*/
H & H: Research and Training 28 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Les commentaires
Trois types de commentaires
Commentaire mono-ligne
// ceci est un commentaire sur une seule ligne
Commentaire sur plusieurs lignes
/* ceci est uncommentairesur trois lignes */
Commentaire pour documentation
/**@author Achref El Mouelhi*/
H & H: Research and Training 28 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Les commentaires
Trois types de commentaires
Commentaire mono-ligne
// ceci est un commentaire sur une seule ligne
Commentaire sur plusieurs lignes
/* ceci est uncommentairesur trois lignes */
Commentaire pour documentation
/**@author Achref El Mouelhi*/
H & H: Research and Training 28 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Les commentaires
Trois types de commentaires
Commentaire mono-ligne
// ceci est un commentaire sur une seule ligne
Commentaire sur plusieurs lignes
/* ceci est uncommentairesur trois lignes */
Commentaire pour documentation
/**@author Achref El Mouelhi*/
H & H: Research and Training 28 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
JavaPour afficher Hello World, on modifie la classe FirstClass
package org.eclipse.classes;
public class FirstClass {
public static void main(String[] args) {
System.out.println("Hello World!");
}}
Java est un langage 100% (ou presque) oriente objet
Pour afficher un message, il faut utiliser la classe System
La classe System a deux objets pour l’entree/sortie (in/out)
L’objet out a plusieurs methodes d’affichage comme print() et println()
H & H: Research and Training 29 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Comment executer le programme? (voir le resultat)
Soit en faisant clic droit sur cours-introduction dansPackage Explorer et aller dans Run As > JavaApplication
Soit en faisant clic droit sur la classe contenant puclic staticvoid main() (ici FirstClass) dans le panneau central et allerdans Run As > Java Application
Soit en cliquant sur le triangle vert dans la liste de raccourci
H & H: Research and Training 30 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Ou voir le resultat ?
Dans la console Eclipse
Si la console n’est pas visible, aller dans Window > Show View> Other..., saisir console et la selectionner puis valider.
Ou sont les .class generes?
Dans le work-space, aller voir dans le repertoire portant le nomdu projet (ici cours-introduction)
Dans org/eclipse/classes, un fichier FirstClass.classa ete genere.
H & H: Research and Training 31 / 90
c© Achref EL MOUELHI c©
Un premier projet Java
Java
Ou voir le resultat ?
Dans la console Eclipse
Si la console n’est pas visible, aller dans Window > Show View> Other..., saisir console et la selectionner puis valider.
Ou sont les .class generes?
Dans le work-space, aller voir dans le repertoire portant le nomdu projet (ici cours-introduction)
Dans org/eclipse/classes, un fichier FirstClass.classa ete genere.
H & H: Research and Training 31 / 90
c© Achref EL MOUELHI c©
Les variables
Java
Une variable ?
Un pointeur vers une zone memoire
Permettant de stocker une ou plusieurs donnees
Pouvant avoir plusieurs valeurs differentes dans un programme
Java est un langage de programmation fortement type
Il faut preciser le type de chaque variable
Une variable peut avoir de valeurs differentes mais ne peutchanger de type.
H & H: Research and Training 32 / 90
c© Achref EL MOUELHI c©
Les variables
Java
Une variable ?
Un pointeur vers une zone memoire
Permettant de stocker une ou plusieurs donnees
Pouvant avoir plusieurs valeurs differentes dans un programme
Java est un langage de programmation fortement type
Il faut preciser le type de chaque variable
Une variable peut avoir de valeurs differentes mais ne peutchanger de type.
H & H: Research and Training 32 / 90
c© Achref EL MOUELHI c©
Les variables
Java
Deux modes de typage en Java
Statique : le type est precise a la declaration de la variable
Dynamique : la variable est declaree avec le mot-cle var et sontype est dynamiquement determine a partir de la valeur initiale.[disponible depuis Java 11]
H & H: Research and Training 33 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Declarer une variable
type nomVariable;
Deux choix possibles pour typer les variables
Types simples (primitifs) : commencent par une lettre enminuscule
Types objets : commencent par une lettre en majuscule
H & H: Research and Training 34 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Declarer une variable
type nomVariable;
Deux choix possibles pour typer les variables
Types simples (primitifs) : commencent par une lettre enminuscule
Types objets : commencent par une lettre en majuscule
H & H: Research and Training 34 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Principaux types primitifs en Java
byte : entier code sur 1 octet (entre -128 et 127)
short : entier code sur 2 octets (entre -32 768 et 32 767)
int : entier code sur 4 octets (entre 2 147 483 648 et 2 147 483 647)
long : entier code sur 8 octets (entre -9 223 372 036 854 775 808 et +9 223 372036 854 775 807)
float : nombre a virgule code sur 4 octets
double : nombre a virgule code sur 8 octets
boolean : soit true soit false (1 octet)
char : caractere code sur 2 octet situe entre deux ’
Pas de type primitif pour les chaınes de caractere.
H & H: Research and Training 35 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Principaux types primitifs en Java
byte : entier code sur 1 octet (entre -128 et 127)
short : entier code sur 2 octets (entre -32 768 et 32 767)
int : entier code sur 4 octets (entre 2 147 483 648 et 2 147 483 647)
long : entier code sur 8 octets (entre -9 223 372 036 854 775 808 et +9 223 372036 854 775 807)
float : nombre a virgule code sur 4 octets
double : nombre a virgule code sur 8 octets
boolean : soit true soit false (1 octet)
char : caractere code sur 2 octet situe entre deux ’
Pas de type primitif pour les chaınes de caractere.H & H: Research and Training 35 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple
int x;
Declarer et initialiser une variable
int x = 5;
Ceci est une erreur
byte x = 130;
Pour convertir le contenu d’une variable (le cast pour les typescompatibles)
int x = 100;byte z = (byte) x;System.out.println(z); // affiche 100
H & H: Research and Training 36 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple
int x;
Declarer et initialiser une variable
int x = 5;
Ceci est une erreur
byte x = 130;
Pour convertir le contenu d’une variable (le cast pour les typescompatibles)
int x = 100;byte z = (byte) x;System.out.println(z); // affiche 100
H & H: Research and Training 36 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple
int x;
Declarer et initialiser une variable
int x = 5;
Ceci est une erreur
byte x = 130;
Pour convertir le contenu d’une variable (le cast pour les typescompatibles)
int x = 100;byte z = (byte) x;System.out.println(z); // affiche 100
H & H: Research and Training 36 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple
int x;
Declarer et initialiser une variable
int x = 5;
Ceci est une erreur
byte x = 130;
Pour convertir le contenu d’une variable (le cast pour les typescompatibles)
int x = 100;byte z = (byte) x;System.out.println(z); // affiche 100
H & H: Research and Training 36 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Attention aux valeurs qui depassent l’intervalle
int x = 200;byte z = (byte) x;System.out.println(z); // affiche -56
H & H: Research and Training 37 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Les emballages (wrapper) de types primitifs (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
Character pour char
Il existe aussi plusieurs autres types objets : String, Date...
H & H: Research and Training 38 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Les emballages (wrapper) de types primitifs (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
Character pour char
Il existe aussi plusieurs autres types objets : String, Date...
H & H: Research and Training 38 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple d’utilisation d’une chaıne de caractere
String string = new String();string = "bonjour";System.out.println(string); // affiche bonjour
On peu aussi faire
String string = new String("bonjour");System.out.println(string); // affiche bonjour
Ou encore
String string = "bonjour";System.out.println(string); // affiche bonjour
Une chaıne de caractere doit etre situee entre deux "contenu"
H & H: Research and Training 39 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple d’utilisation d’une chaıne de caractere
String string = new String();string = "bonjour";System.out.println(string); // affiche bonjour
On peu aussi faire
String string = new String("bonjour");System.out.println(string); // affiche bonjour
Ou encore
String string = "bonjour";System.out.println(string); // affiche bonjour
Une chaıne de caractere doit etre situee entre deux "contenu"
H & H: Research and Training 39 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple d’utilisation d’une chaıne de caractere
String string = new String();string = "bonjour";System.out.println(string); // affiche bonjour
On peu aussi faire
String string = new String("bonjour");System.out.println(string); // affiche bonjour
Ou encore
String string = "bonjour";System.out.println(string); // affiche bonjour
Une chaıne de caractere doit etre situee entre deux "contenu"
H & H: Research and Training 39 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple d’utilisation d’une chaıne de caractere
String string = new String();string = "bonjour";System.out.println(string); // affiche bonjour
On peu aussi faire
String string = new String("bonjour");System.out.println(string); // affiche bonjour
Ou encore
String string = "bonjour";System.out.println(string); // affiche bonjour
Une chaıne de caractere doit etre situee entre deux "contenu"H & H: Research and Training 39 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Pourquoi les types primitifs et les types objets?
Les types primitifs sont moins couteux en memoire
Les types objets offrent plusieurs methodes a appliquer sur lesvaleurs : conversion, nombre de caractere...
Toutes les classes wrappers contiennent une methode(TypeObjet.parseTypeSimple(string)) qui permet deconvertir une chaine de caractere en type primitif de cette classe
H & H: Research and Training 40 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
JavaQuelques methodes de la classe String
length() : retourne le nombre de caractere de la chaıne.
indexOf(x) : retourne l’indice de la premiere occurrence de la valeur de xdans la chaıne, -1 sinon.
contains() : retourne true si la chaıne contient x, false sinon.
charAt(i) : retourne le caractere d’indice i dans la chaıne.
substring(i,j) : permet d’extraire une sous-chaıne de la chaıne a partir del’indice i jusqu’au l’indice j - 1
equals(str) : permet de comparer la chaıne a str et retourne true en casd’egalite, false sinon.
replace(old,new) : permet de remplacer toute occurrence de la chaıne olddans la chaıne courante par new et retourne la nouvelle chaıne
...
H & H: Research and Training 41 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple : replace(old,new)
String string = "bonjour les bons jours";String string2 = string.replace("jour", "soir");System.out.println(string2);// bonsoir les bons soirs
Exemple : indexOf(str,fromIndex)
String string = "bonjour les bons jours";int pos = string.indexOf("bon", 5);System.out.println(pos);// affiche 12
H & H: Research and Training 42 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple : replace(old,new)
String string = "bonjour les bons jours";String string2 = string.replace("jour", "soir");System.out.println(string2);// bonsoir les bons soirs
Exemple : indexOf(str,fromIndex)
String string = "bonjour les bons jours";int pos = string.indexOf("bon", 5);System.out.println(pos);// affiche 12
H & H: Research and Training 42 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple de conversion d’une chaıne de caractere
String string = "2";byte z = Byte.parseByte(string);System.out.println(z); // affiche 2
Ceci declenche une exception (arret d’execution)
String string = "a";byte z = Byte.parseByte(string);System.out.println(z);
Le resultat
Exception in thread "main" java.lang.NumberFormatException: For input string: "a"
H & H: Research and Training 43 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple de conversion d’une chaıne de caractere
String string = "2";byte z = Byte.parseByte(string);System.out.println(z); // affiche 2
Ceci declenche une exception (arret d’execution)
String string = "a";byte z = Byte.parseByte(string);System.out.println(z);
Le resultat
Exception in thread "main" java.lang.NumberFormatException: For input string: "a"
H & H: Research and Training 43 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Exemple de conversion de Integer en String
Integer x = 2;String string = x.toString();System.out.println(string); // affiche 2
H & H: Research and Training 44 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
JavaQuatre methodes pour convertir int en String
int y = 3;String chaine =((Integer) y).toString();System.out.println(chaine); // affiche 3
int z = 4;String str = Integer.toString(z);System.out.println(str); // affiche 4
int t = 5;String s = String.valueOf(t);System.out.println(s); // affiche 5
int u = 6;String s = "" + u;System.out.println(s); // affiche 6
H & H: Research and Training 45 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Attention, le cast entre deux types incompatibles n’est pasautorise
int z = 4;String str =(String) z;System.out.println(str);
H & H: Research and Training 46 / 90
c© Achref EL MOUELHI c©
Les variables Typage statique
Java
Pas besoin de convertir d’un type simple vers son wrapper (ouinversement)
Integer j = 2;int k = j;System.out.println(k); // affiche 2
int l = 3;Integer m = l;System.out.println(m); // affiche 3
H & H: Research and Training 47 / 90
c© Achref EL MOUELHI c©
Les variables Typage dynamique
Java
Declarer une variable avec le mot-cle var
var nomVariable = valeurInitiale;
Remarque
Une variable declaree avec le mot-cle var
doit etre initialisee
a un type determine en fonction de sa valeur initiale
ne peut changer de type
H & H: Research and Training 48 / 90
c© Achref EL MOUELHI c©
Les variables Typage dynamique
Java
Declarer une variable avec le mot-cle var
var nomVariable = valeurInitiale;
Remarque
Une variable declaree avec le mot-cle var
doit etre initialisee
a un type determine en fonction de sa valeur initiale
ne peut changer de type
H & H: Research and Training 48 / 90
c© Achref EL MOUELHI c©
Les variables Typage dynamique
Java
Exemple
var x = 10;
Ceci genere une erreur
x = "bonjour";
H & H: Research and Training 49 / 90
c© Achref EL MOUELHI c©
Les variables Typage dynamique
Java
Exemple
var x = 10;
Ceci genere une erreur
x = "bonjour";
H & H: Research and Training 49 / 90
c© Achref EL MOUELHI c©
Les operations sur les variables
Java
Pour les variables numeriques (int, float...)
= : affectation
+ : addition
- : soustraction
* : multiplication
/ : division
% : reste de la division
H & H: Research and Training 50 / 90
c© Achref EL MOUELHI c©
Les operations sur les variables
Java
Quelques raccourcis
i = i + 1 ⇒ i++;
i = i - 1 ⇒ i--;
i = i + 2 ⇒ i += 2;
i = i - 2 ⇒ i -= 2;
...
H & H: Research and Training 51 / 90
c© Achref EL MOUELHI c©
Les operations sur les variables
Java
Exemple de post-incrementation
int i = 2;int j = i++;System.out.println(i); // affiche 3System.out.println(j); // affiche 2
Exemple de pre-incrementation
int i = 2;int j = ++i;System.out.println(i); // affiche 3System.out.println(j); // affiche 3
H & H: Research and Training 52 / 90
c© Achref EL MOUELHI c©
Les operations sur les variables
Java
Exemple de post-incrementation
int i = 2;int j = i++;System.out.println(i); // affiche 3System.out.println(j); // affiche 2
Exemple de pre-incrementation
int i = 2;int j = ++i;System.out.println(i); // affiche 3System.out.println(j); // affiche 3
H & H: Research and Training 52 / 90
c© Achref EL MOUELHI c©
Les operations sur les variables
Java
L’operateur + pour concatener deux chaınes de caractere
String string = "bon";String string2 = "jour";System.out.println(string + string2);// affiche bonjour
H & H: Research and Training 53 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
Pour lire une valeur saisie par l’utilisateur dans la console
il faut utiliser la classe Scanner
il faut preciser le type de la valeur a recuperer
H & H: Research and Training 54 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
Instancier la classe Scanner
Scanner scanner = new Scanner(System.in);
La classe Scanner est signalee en rouge, il faut l’importer
import java.util.Scanner;
Exemple de lecture d’un entier
int i = scanner.nextInt();
Fermer le scanner
scanner.close();
H & H: Research and Training 55 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
Instancier la classe Scanner
Scanner scanner = new Scanner(System.in);
La classe Scanner est signalee en rouge, il faut l’importer
import java.util.Scanner;
Exemple de lecture d’un entier
int i = scanner.nextInt();
Fermer le scanner
scanner.close();
H & H: Research and Training 55 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
Instancier la classe Scanner
Scanner scanner = new Scanner(System.in);
La classe Scanner est signalee en rouge, il faut l’importer
import java.util.Scanner;
Exemple de lecture d’un entier
int i = scanner.nextInt();
Fermer le scanner
scanner.close();
H & H: Research and Training 55 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
Instancier la classe Scanner
Scanner scanner = new Scanner(System.in);
La classe Scanner est signalee en rouge, il faut l’importer
import java.util.Scanner;
Exemple de lecture d’un entier
int i = scanner.nextInt();
Fermer le scanner
scanner.close();
H & H: Research and Training 55 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
Remarques
Pour lire une chaıne de caractere, il faut utiliser la methodenext() ou nextLine()
Pour lire un nombre reel, il faut utiliser la methode nextFloat()
...
H & H: Research and Training 56 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
Exemple avec next()
Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();System.out.println(string);// affiche bonjour
Exemple avec nextLine()
Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.nextLine();System.out.println(string);// affiche bonjour tout le monde
H & H: Research and Training 57 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
Exemple avec next()
Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();System.out.println(string);// affiche bonjour
Exemple avec nextLine()
Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.nextLine();System.out.println(string);// affiche bonjour tout le monde
H & H: Research and Training 57 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
A chaque appel a next(), on recupere le token suivant
Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();String s = scanner.next();System.out.println(s);// affiche tout
Le code suivant declenche une exception car on ne peut affecterla chaıne "tout" a un entier
Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();int v = scanner.nextInt();System.out.println(v);
H & H: Research and Training 58 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
A chaque appel a next(), on recupere le token suivant
Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();String s = scanner.next();System.out.println(s);// affiche tout
Le code suivant declenche une exception car on ne peut affecterla chaıne "tout" a un entier
Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();int v = scanner.nextInt();System.out.println(v);
H & H: Research and Training 58 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
Il n’existe pas une methode specifiques aux caracteres, mais onpeut faire
Scanner scanner = new Scanner(System.in);String string = scanner.next();char c = scanner.next().charAt(0);System.out.println(c);
H & H: Research and Training 59 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
On peut aussi utiliser les methodes statiques de la classe Math
Math.abs(x) : retourne la valeur absolue de x
Math.pow(x,y) : retourne la x puissance y
Math.max(x,y) : retourne le max de x et y
Math.min(x,y) : retourne le min de x et y
Math.sqrt(x) : retourne la racine carre de x
Math.floor(x), Math.ceil(x) et Math.round(x) :retournent l’arrondi de x
Math.random() : retourne une valeur aleatoire entre 0 et 1
...
H & H: Research and Training 60 / 90
c© Achref EL MOUELHI c©
La lecture d’une saisie
Java
Exemple avec Math.floor(x), Math.ceil(x) etMath.round(x)
System.out.println(Math.round(1.9)); // affiche 2System.out.println(Math.round(1.5)); // affiche 2System.out.println(Math.round(1.4)); // affiche 1System.out.println(Math.ceil(1.9)); // affiche 2System.out.println(Math.ceil(1.5)); // affiche 2System.out.println(Math.ceil(1.4)); // affiche 2System.out.println(Math.floor(1.9)); // affiche 1System.out.println(Math.floor(1.5)); // affiche 1System.out.println(Math.floor(1.4)); // affiche 1
H & H: Research and Training 61 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles if
Java
Executer si une condition est vraie
if (condition) {...
}
Exemple
var x = 3;if (x >= 0) {
System.out.println(x + " est positif");}
Pour les conditions, on utilise les operateurs de comparaison
H & H: Research and Training 62 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles if
Java
Executer si une condition est vraie
if (condition) {...
}
Exemple
var x = 3;if (x >= 0) {
System.out.println(x + " est positif");}
Pour les conditions, on utilise les operateurs de comparaison
H & H: Research and Training 62 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles if
Java
Executer si une condition est vraie
if (condition) {...
}
Exemple
var x = 3;if (x >= 0) {
System.out.println(x + " est positif");}
Pour les conditions, on utilise les operateurs de comparaison
H & H: Research and Training 62 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles if
Java
Operateurs de comparaison
== : pour tester l’egalite
!= : pour tester l’inegalite
> : superieur a
< : inferieur a
>= : superieur ou egal a
<= : inferieur ou egal a
En java, on ne peut comparer deux valeurs de type incompatible
H & H: Research and Training 63 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles if
Java
Operateurs de comparaison
== : pour tester l’egalite
!= : pour tester l’inegalite
> : superieur a
< : inferieur a
>= : superieur ou egal a
<= : inferieur ou egal a
En java, on ne peut comparer deux valeurs de type incompatible
H & H: Research and Training 63 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles if ... else
JavaExecuter un premier bloc si une condition est vraie, un deuxieme sinon (le bloc else)
if (condition1) {...
}else {...
}
Exemple
var x = 3;if (x > 0){System.out.println(x + " est strictement positif");
}else{System.out.println(x + " est negatif ou nul");
}
H & H: Research and Training 64 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles if ... else
JavaExecuter un premier bloc si une condition est vraie, un deuxieme sinon (le bloc else)
if (condition1) {...
}else {...
}
Exemple
var x = 3;if (x > 0){System.out.println(x + " est strictement positif");
}else{System.out.println(x + " est negatif ou nul");
}
H & H: Research and Training 64 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles if ... else if ... else
Java
On peut enchaıner les conditions avec else if (et avoir untroisieme bloc voire ... un nieme)
if (condition1){
...}else if (condition2){
...}...else{
...}
H & H: Research and Training 65 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles if ... else if ... else
Java
Exemple
var x = -3;if (x > 0){System.out.println(x + " est strictement positif");
}else if (x < 0){System.out.println(x + " est strictement negatif");
}else{System.out.println(x + " est nul");
}
H & H: Research and Training 66 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles if ... else if ... else
Java
Operateurs logiques
&& : et
|| : ou
! : non
Tester plusieurs conditions (en utilisant des operateurs logiques)
if (condition1 && !condition2 || condition3){...
}[else ...]
H & H: Research and Training 67 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles if ... else if ... else
Java
Operateurs logiques
&& : et
|| : ou
! : non
Tester plusieurs conditions (en utilisant des operateurs logiques)
if (condition1 && !condition2 || condition3){...
}[else ...]
H & H: Research and Training 67 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles switch
Java
Structure conditionnelle switch : syntaxe
switch (nomVariable) {case constante-1:
groupe-instructions-1;break;
case constante-2:groupe-instructions-2;break;
...case constante-N:
groupe-instructions-N;break;
default:groupe-instructions-par-defaut;
}
H & H: Research and Training 68 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles switch
Java
Remarques
Le switch permet seulement de tester l’egalite
Le break permet de quitter le switch une fois un bloc caseexecute
Il est possible de regrouper plusieurs case
Le bloc default est facultatif, il sera execute si la valeur de lavariable ne correspond a aucune constante de case
H & H: Research and Training 69 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles switch
Java
Structure conditionnelle avec switch
int x = 5;switch (x) {
case 1:System.out.println("un");break;
case 2:System.out.println("deux");break;
case 3:System.out.println("trois");break;
default:System.out.println("autre");
}
H & H: Research and Training 70 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles switch
JavaUn multi-case pour un seul traitement
var x = 5;switch (x) {case 1:case 2:
System.out.println("un ou deux");break;
case 3:System.out.println("trois");break;
case 4:case 5:
System.out.println("quatre ou cinq");break;
default:System.out.println("autre");
}
H & H: Research and Training 71 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles switch
Java
La variable dans switch peut etre
de types simples : int, short, byte et char
de type wrappers correspondants : Integer, Short, Byte etCharacter
de type enumeration depuis Java 6
de type chaıne de caractere depuis Java 7
H & H: Research and Training 72 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles switch
Java
Si on supprime un break
String x = "2";switch (x) {case "1":System.out.println("un");break;
case "2":System.out.println("deux");
case "3":System.out.println("trois");break;
default:System.out.println("autre");
}// affiche deux trois
H & H: Research and Training 73 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles Expression ternaire
Java
Simplifions l’ecriture avec l’expression ternaire
int x = 2;String type = (x % 2 == 0) ? "pair" : "impair";System.out.println(type); // affiche pair
H & H: Research and Training 74 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles while
Java
Boucle while : a chaque iteration on teste si la condition estvraie avant d’acceder aux traitements
while (condition[s]) {...
}
Attention aux boucles infinies, verifier que la condition d’arret sera bienatteinte apres un certain nombre d’iterations.
H & H: Research and Training 75 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles while
Java
Boucle while : a chaque iteration on teste si la condition estvraie avant d’acceder aux traitements
while (condition[s]) {...
}
Attention aux boucles infinies, verifier que la condition d’arret sera bienatteinte apres un certain nombre d’iterations.
H & H: Research and Training 75 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles while
Java
Exemple
var i = 0;while (i < 5) {System.out.println(i);i++;
}
Le resultat est
01234
H & H: Research and Training 76 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles while
Java
Exemple
var i = 0;while (i < 5) {System.out.println(i);i++;
}
Le resultat est
01234
H & H: Research and Training 76 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles do ... while
Java
La Boucle do ... while execute le bloc au moins une fois ensuiteelle verifie la condition
do {...
}while (condition[s]);
Attention aux boucles infinies, verifier que la condition d’arret sera bienatteinte apres un certain nombre d’iterations.
H & H: Research and Training 77 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles do ... while
Java
La Boucle do ... while execute le bloc au moins une fois ensuiteelle verifie la condition
do {...
}while (condition[s]);
Attention aux boucles infinies, verifier que la condition d’arret sera bienatteinte apres un certain nombre d’iterations.
H & H: Research and Training 77 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles do ... while
Java
Exemple
var i = 0;do {System.out.println(i);i++;
} while (i < 5);
Le resultat est
01234
H & H: Research and Training 78 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles do ... while
Java
Exemple
var i = 0;do {System.out.println(i);i++;
} while (i < 5);
Le resultat est
01234
H & H: Research and Training 78 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles for
Java
Boucle for
for (initialisation; condition[s]; incrementation) {...
}
Attention aux boucles infinies si vous modifiez la valeur du compteur al’interieur de la boucle.
H & H: Research and Training 79 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles for
Java
Boucle for
for (initialisation; condition[s]; incrementation) {...
}
Attention aux boucles infinies si vous modifiez la valeur du compteur al’interieur de la boucle.
H & H: Research and Training 79 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles for
Java
Exemple
for (var i = 0; i < 5; i++) {System.out.println(i);
}
Le resultat est
01234
H & H: Research and Training 80 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles for
Java
Exemple
for (var i = 0; i < 5; i++) {System.out.println(i);
}
Le resultat est
01234
H & H: Research and Training 80 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles for
Java
Exercice
Ecrire un code Java qui permet d’afficher les nombres pairs compris entre 0 et 10.
Premiere solution
for (var i = 0; i < 10; i++) {if (i % 2 == 0) {
System.out.println(i);}
}
Deuxieme solution
for (var i = 0; i < 10; i += 2) {System.out.println(i);
}
H & H: Research and Training 81 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles for
Java
Exercice
Ecrire un code Java qui permet d’afficher les nombres pairs compris entre 0 et 10.
Premiere solution
for (var i = 0; i < 10; i++) {if (i % 2 == 0) {System.out.println(i);
}}
Deuxieme solution
for (var i = 0; i < 10; i += 2) {System.out.println(i);
}
H & H: Research and Training 81 / 90
c© Achref EL MOUELHI c©
Les conditions et les boucles for
Java
Exercice
Ecrire un code Java qui permet d’afficher les nombres pairs compris entre 0 et 10.
Premiere solution
for (var i = 0; i < 10; i++) {if (i % 2 == 0) {System.out.println(i);
}}
Deuxieme solution
for (var i = 0; i < 10; i += 2) {System.out.println(i);
}
H & H: Research and Training 81 / 90
c© Achref EL MOUELHI c©
Les tableaux
Java
En java, les tableaux sont statiques
Tous les elements doivent avoir le meme type
Il faut preciser une taille qu’on ne peut depasser
Declaration d’un tableau : syntaxe
type [] nomTableau = new type[taille];
Declaration d’un tableau d’entier de taille 2 : exemple
int [] tab = new int[2];
H & H: Research and Training 82 / 90
c© Achref EL MOUELHI c©
Les tableaux
Java
En java, les tableaux sont statiques
Tous les elements doivent avoir le meme type
Il faut preciser une taille qu’on ne peut depasser
Declaration d’un tableau : syntaxe
type [] nomTableau = new type[taille];
Declaration d’un tableau d’entier de taille 2 : exemple
int [] tab = new int[2];
H & H: Research and Training 82 / 90
c© Achref EL MOUELHI c©
Les tableaux
Java
En java, les tableaux sont statiques
Tous les elements doivent avoir le meme type
Il faut preciser une taille qu’on ne peut depasser
Declaration d’un tableau : syntaxe
type [] nomTableau = new type[taille];
Declaration d’un tableau d’entier de taille 2 : exemple
int [] tab = new int[2];
H & H: Research and Training 82 / 90
c© Achref EL MOUELHI c©
Les tableaux
Java
Affectation de valeurs aux cases de tableau
tab[0] = 5;tab[1] = 3;
Ceci declenche une exception
tab[2] = 10;
L’exception
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at org.eclipse.classes.FirstClass.main(FirstClass.java:11)
H & H: Research and Training 83 / 90
c© Achref EL MOUELHI c©
Les tableaux
Java
Affectation de valeurs aux cases de tableau
tab[0] = 5;tab[1] = 3;
Ceci declenche une exception
tab[2] = 10;
L’exception
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at org.eclipse.classes.FirstClass.main(FirstClass.java:11)
H & H: Research and Training 83 / 90
c© Achref EL MOUELHI c©
Les tableaux
Java
On peut faire une declaration + une initialisation
int [] tab = { 5, 3 };
Comme si la taille du tableau a ete fixee a deux
Donc, ceci declenche aussi une exception
tab[2] = 10;
L’exceptionException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at org.eclipse.classes.FirstClass.main(FirstClass.java:11)
H & H: Research and Training 84 / 90
c© Achref EL MOUELHI c©
Les tableaux
Java
On peut faire une declaration + une initialisation
int [] tab = { 5, 3 };
Comme si la taille du tableau a ete fixee a deux
Donc, ceci declenche aussi une exception
tab[2] = 10;
L’exceptionException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at org.eclipse.classes.FirstClass.main(FirstClass.java:11)
H & H: Research and Training 84 / 90
c© Achref EL MOUELHI c©
Les tableaux
Java
Pour parcourir le tableau
for(int i = 0; i < tab.length; i++){System.out.println(tab[i]);
}
Ou encore la version simplifiee (foreach)
for(int elt : tab){System.out.println(elt);
}
H & H: Research and Training 85 / 90
c© Achref EL MOUELHI c©
Les tableaux
Java
Pour parcourir le tableau
for(int i = 0; i < tab.length; i++){System.out.println(tab[i]);
}
Ou encore la version simplifiee (foreach)
for(int elt : tab){System.out.println(elt);
}
H & H: Research and Training 85 / 90
c© Achref EL MOUELHI c©
Les constantes
Java
Une constante
un element qui ne peut changer de valeur
Pour declarer une constante
il faut utiliser le mot-cle final
Declaration d’une constante
final double PI = 3.1415;
L’instruction suivante ne peut etre acceptee
PI = 5;
H & H: Research and Training 86 / 90
c© Achref EL MOUELHI c©
Les constantes
Java
Une constante
un element qui ne peut changer de valeur
Pour declarer une constante
il faut utiliser le mot-cle final
Declaration d’une constante
final double PI = 3.1415;
L’instruction suivante ne peut etre acceptee
PI = 5;
H & H: Research and Training 86 / 90
c© Achref EL MOUELHI c©
Les constantes
Java
Une constante
un element qui ne peut changer de valeur
Pour declarer une constante
il faut utiliser le mot-cle final
Declaration d’une constante
final double PI = 3.1415;
L’instruction suivante ne peut etre acceptee
PI = 5;
H & H: Research and Training 86 / 90
c© Achref EL MOUELHI c©
Les constantes
Java
Une constante
un element qui ne peut changer de valeur
Pour declarer une constante
il faut utiliser le mot-cle final
Declaration d’une constante
final double PI = 3.1415;
L’instruction suivante ne peut etre acceptee
PI = 5;
H & H: Research and Training 86 / 90
c© Achref EL MOUELHI c©
Les methodes
JavaUne methode
caracterisee par : visibilite [+ static] + type de retour +nomMethode([les parametres]) + son implementation
Exemple de declaration d’une methode
public static int somme (int a, int b) {return a + b;
}
Exemple d’appel d’une methode
System.out.println(somme(2, 3));// affiche 5
H & H: Research and Training 87 / 90
c© Achref EL MOUELHI c©
Les methodes
JavaUne methode
caracterisee par : visibilite [+ static] + type de retour +nomMethode([les parametres]) + son implementation
Exemple de declaration d’une methode
public static int somme (int a, int b) {return a + b;
}
Exemple d’appel d’une methode
System.out.println(somme(2, 3));// affiche 5
H & H: Research and Training 87 / 90
c© Achref EL MOUELHI c©
Les methodes
JavaUne methode
caracterisee par : visibilite [+ static] + type de retour +nomMethode([les parametres]) + son implementation
Exemple de declaration d’une methode
public static int somme (int a, int b) {return a + b;
}
Exemple d’appel d’une methode
System.out.println(somme(2, 3));// affiche 5
H & H: Research and Training 87 / 90
c© Achref EL MOUELHI c©
Les methodes
JavaDeclaration de methode avec un nombre indetermine de parametres (varargs)
public static int somme(int... tab) {int res = 0;for (int elt : tab)res += elt;
return res;}
Exemple d’appel
System.out.println(somme(2));// affiche 2System.out.println(somme(2, 3));// affiche 5System.out.println(somme(2, 3, 5));// affiche 10System.out.println(somme(2, 3, 5, 9));// affiche 19
H & H: Research and Training 88 / 90
c© Achref EL MOUELHI c©
Les methodes
JavaDeclaration de methode avec un nombre indetermine de parametres (varargs)
public static int somme(int... tab) {int res = 0;for (int elt : tab)res += elt;
return res;}
Exemple d’appel
System.out.println(somme(2));// affiche 2System.out.println(somme(2, 3));// affiche 5System.out.println(somme(2, 3, 5));// affiche 10System.out.println(somme(2, 3, 5, 9));// affiche 19
H & H: Research and Training 88 / 90
c© Achref EL MOUELHI c©
Les methodes
Java
Remarques
varargs est disponible depuis Java 5.
On ne peut avoir qu’un seul varargs par methode
Le parametre varargs doit etre le dernier dans la liste deparametres d’une methode
H & H: Research and Training 89 / 90
c© Achref EL MOUELHI c©
Les methodes
Java
Remarques
Comme Java supporte la surcharge de methodes
Pas de parametres optionnels
Pas de valeur par defaut pour les parametres
H & H: Research and Training 90 / 90