Documente Academic
Documente Profesional
Documente Cultură
Page 1/14
1 Objectifs pédagogiques
A la fin de ce cours, je dois être capable de :
• Connaître les principales caractéristiques du langage Java
• Connaître les définitions de JDK, JRE, JSE, J2E
• Savoir déclarer une classe et la méthode principale d'un programme Java
• Savoir déclarer et initialiser des variables en Java
• Savoir évaluer une expression en Java
• Savoir effectuer des entrées/sorties au clavier/écran en Java
• Savoir écrire des structures de contrôles conditionnelles (if...) et itératives (while...) en Java
• Savoir manipuler des tableaux et écrire des algorithmes simples sur les tableaux en Java
• Savoir écrire des méthodes en Java (équivalent des procédures/fonctions en algorithmes)
2 Introduction et définitions
2.1 Bref historique sur Java
Java a été créé par créé par James Gosling et Patrick Naughton (Sun)
• 1995 : Premier lancement commercial de Java dans sa première version
• 2000 : Lancement de la version 1.2, formant la séparation entre JSE et JEE (J2E)
• 2010 : Rachat de Sun par Oracle
Aujourd'hui (septembre 2015), la version actuelle de Java est la 1.8, souvent appelée Java 8.
Page 2/14
2.3 Java SE et Java EE
Java SE (anciennement J2SE) : framework destiné aux applications pour poste de travail.
Java EE (anciennement J2EE) : framework spécialisé dans les applications serveurs. Il contient pour ce faire un grand nombre d’API
et d’extensions.
• Tout programme Java s'écrit dans une classe (nous reviendront sur cette notion au prochian chapitre). Le nom de la classe
est également le nom du fichier, ici PremierProgramme.java. Appeler la classe avec un nom différent de celui du fichier
produira une erreur à la compilation.
• La méthode principale d'un programme est la méthode main : c'est là que le programme commence. Cette méthode a
toujours la même signature. Le paramètre "args" permet de récupérer les paramètres saisis au programme en ligne de
commande (il s'agit d'un tableau de chaîne de caractères).
• Pour afficher un message, on utilise "System.out.println". "System" est une classe Java, out représente la sortie du
programme, et est un attribut de "System". "println" est une méthode (semblable à une fonction) qui affiche une chaine de
caractères sur la sortie standard, c'est à dire l'écran.
Page 3/14
La première ligne sert à compiler le programme Java.
La seconde ligne sert à exécuter le programme. Remarquez que l'on n'écrit pas "java PremierProgramme.class". En effet,
l'interpréteur Java n'attend pas le nom d'un fichier compilé (.class), mais le nom d'une classe, telle qu'elle a été déclarée.
int a; // Je déclare une variable qui s'appelle a et qui est de type int
a = 5; // La variable a reçoit la valeur 5
/* Je voudrais maintenant faire un gros calcul :
a va recevoir le résultat du produit de 5 par 4, augmenté de 9 */
a = 5 * 4 + 9;
Nom Equivalent algo Taille en octets Valeur par défaut Exemple de valeur
boolean Booléen 1 false true
byte Entier 1 0 12
short Entier 2 0 52000
int Entier 4 0 -4848
long Entier 8 0 30061960
char Caractère 2 '\0' 'A'
float Décimal 4 0.0 5.5
double Décimal 8 0.0 -6.5
On peut remarquer que chacun de ces types commence par une minuscule.
typeVariable nomVariable;
La déclaration de variable est une instruction comme une autre. Elle se termine par un point virgule, comme toutes les instructions.
On peut déclarer plusieurs variables d'un même type à la fois :
Page 4/14
typeVariable nomVariable1, nomVariable2, nomVariable3, ...;
On peut initialiser les variables partout dans son code en Java, pas nécessairement au début d'un bloc. Cependant, une variable doit
toujours avoir été déclarée ET initialisée avant d'être utilisée dans une expression. Lors d'une assignation, le type de la variable, et le
type de l'expression que l'on va assigner doivent être compatibles (on ne peut pas mettre des int dans des String, ni des char dans des
int, mais on peut mettre des int dans des double...).
L'opérateur d'assignation est le signe égal, "=" (comme dans le langage C).
nomVariable = expression;
int a, baba;
char c;
a = 85;
baba = -454;
c = 'O';
String texte = "KINSHASA";
3.5 Opérateurs
Page 5/14
Il existe deux opérateur d'incrémentation/décrémentation, que l'on utilise très souvent : ++ et --. Ce sont juste des raccourcis de
syntaxe.
Opérateur Description Exemple sans l'opérateur simplifié Exemple équivalent avec l'opérateur simplifié
++ Augmente de 1 a = a + 1; a++;
-- Diminue de 1 a = a – 1; a--;
Une assignation est faite à l'aide d'un opérateur. De ce fait, une assignation renvoie une valeur. La valeur renvoyée par une
assignation est la valeur que l'on vient de calculer.
De ce fait, on peut tout à fait écrire :
int a, b, c;
a = b = c = 2;
Cela va initialiser les trois variables à 2.
Page 6/14
boolean b = a < 4 && (a / 0 == 0); Donc pas d'erreur à l'exécution, car la division par 0 n'a
pas été exécutée !
3.5.5 Concaténation
La concaténation est l'opération permettant de "coller" deux chaines de caractères, c'est à dire de les mettre toutes deux bout à bout,
l'une à côté de l'autre, afin d'obtenir une nouvelle chaine. Par exemple, si on concatène "A" et "B", on obtient "AB".
En Java, la concaténation se fait avec l'opérateur +. C'est le même opérateur que l'addition. Toutefois, Java fera la différence avec
une addition si au moins une des deux opérandes est de type String. De plus, si l'une des deux opérandes n'est pas de type String, alors
Java essaiera de la convertir en String, automatiquement.
Voici un exemple de code :
4 Entrée/sortie basiques
4.1 Saisie au clavier
Pour faire une saisie au clavier, il faut tout d'abord déclarer un objet de type "Scanner". Nous ne nous attarderons pas pour l'instant
sur ce qu'est un objet, cela sera vu au chapitre suivant. Pour l'instant, nous appliquerons donc la syntaxe sans la comprendre
parfaitement. Le scanner est capable de lire les données tapées au clavier par l'utilisateur.
Afin de pouvoir utiliser un objet Scanner, il faudra également écrire une instruction au tout début du fichier Java : import
java.util.Scanner, afin d'indiquer à Java le nom complet de cet objet.
Voici un exemple de code Java complet qui fait la lecture d'une variable de type Entier :
import java.util.Scanner;
int a = clavier.nextInt();
clavier.nextLine();
}
}
L'objet Scanner a été nommé ici "clavier", mais on aurait pu lui donner n'importe quel nom de variable. On peut utiliser le même objet
Scanner pour faire plusieurs saisies successives.
La méthode "nextInt()", concrétement, fait la saisie d'un entier : c'est à ce moment que le curseur clignote et que l'utilisateur va taper
une valeur. L'appel à "nextLine()" sert à enlever le caractère de fin de ligne qui a été tapée au clavier. Si on n'appelle pas "nextLine"
après "nextInt", cela peut poser des problèmes (que nous ne détaillerons pas ici) si l'on souhaite faire certaines saisies successives.
Selon le type de variable que l'on souhaite lire, il faut utiliser une méthode du scanner différente.
Page 7/14
clavier.nextLine(); une valeur qui n'est pas un
nombre virgule.
float nextFloat float a; Decimal a Provoque une erreur
a = clavier.nextFloat(); a ← LireDecimal() d'exécution si l'utilisateur tape
clavier.nextLine(); une valeur qui n'est pas un
nombre virgule.
boolean nextBoolean boolean a; Booleen a Provoque une erreur
a = clavier.nextBoolean(); a ← LireBooleen() d'exécution si l'utilisateur tape
clavier.nextLine(); une valeur qui n'est ni "true",
ni "false". Cette méthode est à
éviter, car il est facile de mal
taper. On préfera la saisie d'un
caractère 'O' ou 'N', puis
transformer celui en booléen.
String nextLine String a; Chaine a
a = clavier.nextLine(); a ← LireChaine()
char nextLine char a; Caractere a Il n'y a pas de méthodes pour
a = a ← LireCaractere() lire un caractère seul. Un
clavier.nextLine().charAt(0); moyen de faire est donc de
lire une ligne complète, mais
de ne récupérer que le
premier caractère. C'est cela
que fait "charAt(0)"
Provoque une erreur
d'exécution si l'utilisateur ne
tape rien.
int a = 5;
int b = 12;
int r = a + b * a – b + b % 7;
System.out.println("a vaut " + a + " et b vaut " + b);
System.out.println("Le résultat du calcul compliqué est : " + r);
Cela va afficher :
a vaut 5 et b vaut 12
Le résultat du calcul compliqué est : 58
Page 8/14
4.2.2 Sortie formatée
Il est parfois utile de formater le texte que l'on souhaite afficher, en particulier lorsqu'il s'agit d'un nombre. On pourra dans ce cas
utiliser System.out.printf (semblable à la fonction printf du langage C).
Voici des exemples qui montrent quelques possibilités :
5 Structures de contrôles
5.1 Structure de contrôle conditionnelle : if ... else...
Cette structure permet d'exécuter certaines instructions et pas d'autres, selon une certaine condition.
La syntaxe est la suivante :
int a = clavier.nextInt();
clavier.nextLine();
Page 9/14
if (a == 0) {
System.out.println("Vous avez tapé 0");
}
Scanner clavier = new Scanner(System.in);
int a = clavier.nextInt();
clavier.nextLine();
if (a % 2 == 0) {
System.out.println("Vous avez tapé un nombre pair");
}
else {
System.out.println("Vous avez tapé un nombre impair");
}
Scanner clavier = new Scanner(System.in);
int a = clavier.nextInt();
clavier.nextLine();
String s;
if (a == 0) {
s = "nul";
}
else if (a > 0) {
s = "positif";
}
else {
s = "negatif";
}
Syntaxe Exemple
switch (variable) { Scanner clavier = new
case valeur1: Scanner(System.in);
traitement si variable est égale à valeur1
break; int a = clavier.nextInt();
case valeur2:
traitement si variable est égale à valeur2 String s;
break; switch (a) {
... case 1:
case valeur3: s = "Un";
traitement si variable est égale à valeur3 break;
break; case 2:
default: s = "Deux";
traitement par défaut break;
} case 3:
s = "Trois";
break;
default:
s= "?";
}
System.out.println(s);
Page 10/14
• Le default est facultatif.
• Si on enlève les break, alors on ne sort pas de la structure, mais on continue d'exécuter les traitements qui suivent, jusqu'à
rencontrer un break (ou jusqu'à arriver au dernier traitement). En général, c'est à éviter !
Syntaxe Exemple
while (condition) { Scanner clavier = new Scanner(System.in);
traitement répété si condition vraie
} System.out.print("Nombre d'étoiles : ");
int n = clavier.nextInt();
clavier.nextLine();
int i = 1;
while (i <= n) {
System.out.println("*");
i++;
}
Syntaxe Exemple
do { Scanner clavier = new Scanner(System.in);
traitement répété si condition vraie
} System.out.println("Tapez un nombre positif : ");
while (condition)
int n;
do {
n = clavier.nextInt();
clavier.nextLine();
}
while (n < 0);
Syntaxe Exemple
for (initialisation; condition; evolution) { Scanner clavier = new Scanner(System.in);
traitement à répéter
} System.out.print("Nombre d'étoiles : ");
int n = clavier.nextInt();
clavier.nextLine();
On se sert fréquemment de la boucle for pour faire varier un nombre entre deux valeurs.
Page 11/14
6 Méthodes
En Java, lorsque l'on souhaite écrire un petit traitement réutilisable, on écrira une méthode. Une méthode est l'équivalent des
procédures et des fonctions en algorithmique.
Voici la syntaxe que nous utiliserons pour déclarer une méthode :
On déclarera les méthodes dans la classe, c'est à dire dans les accolades de la classe. On peut les déclarer avant ou après la méthode
main. Le mot-clé static sera toujours utilisé pour l'instant, car nous n'avons pas encore étudié la programmation orienté objet (chapitre
suivant).
Le type de retour peut être absolument n'importe quel type de variable. Lorsqu'une méthode ne renvoie aucune valeur, on utilisera le
mot-clé void. Pour renvoyer une valeur dans le corps de la méthode, on utilisera le mot-clé return.
Pour appeler une méthode, il suffit d'écrire son nom, et de donner les valeurs des paramètres.
Voici un exemple complet de programme Java dont le programme principal a été décomposé en trois méthodes.
import java.util.Scanner;
Page 12/14
7 Tableaux
7.1 Rappel du concept de tableau en algorithmique
Un tableau, en programmation, est une suite ordonnée de valeurs. Chaque valeur est présente à un index, qui est un nombre entier,
compris entre 0 et (taille du tableau – 1). Un tableau est donc un type de variable qui contient un ensemble de plusieurs valeurs.
Voici une représentation d'un tableau de 5 entiers.
Valeur 12 3 2 21 42
Index 0 1 2 3 4
Dans cet exemple, à l'index 0, on a la valeur 12. A l'index 1, on a la valeur 3, et ainsi de suite.
Ici on a choisi d'avoir un tableau de nombres, mais on aurait très bien pu avoir un tableau de caractères, de booléens, d'objets...
typeTableau[] nomTableau;
int[] monTableau;
Par exemple, pour avoir un tableau avec 5 valeurs initiales, cela donne :
Remarquons que dans ce cas, la taille du tableau est automatiquement déduite du nombre d'éléments entre accolades.
Par exemple, pour avoir un tableau à 5 cases (chacune vaudra 0 par défaut), cela donne:
Suite à cette initialisation, toutes les valeurs du tableau prennent la valeur par défaut du type de variable du tableau. Par exemple, 0
pour les entiers.
On peut aussi faire cette initialisation directement à la déclaration :
Page 13/14
nomTableau[index]
Par exemple, pour mettre 21 à l'index 3 on peut écrire :
monTableau[3] = 21
Pour stocker le contenu de la case d'index 3 d'un tableau, dans une autre variable, on peut écrire :
int a = monTableau[3];
Et que se passe-t-il si l'index est en dehors des limites du tableau, c'est à dire strictement inférieur à 0, ou supérieur ou égal à la taille
du tableau ? Java va lancer une erreur (ou plus précisément une exception). Quand on accède à un élément d'un tableau, il faut donc
être sûr de ne pas être en dehors des limites !
Dans cet exemple, on parcours l'intégralité du tableau. Mais on peut restreindre à une portion différentes en changeant l'initialisation
ou la condition, pour peu que ces valeurs définissent un intervalle valide, dans les limites du tableau.
Par exemple, pour afficher toutes les valeurs d'un tableau, on peut écrire le code suivant :
Page 14/14