Chapitre 1 Partie 2
Chapitre 1 Partie 2
Chapitre 1 Partie 2
Lomé : 07BP 13517 Tél: (228) 22201293 / 70416724 / 22225017 E-mail : esgis.togo@esgis.org
Cotonou : 06BP 3233 Tél: (229) 21 32 47 73 E-mail : esgis.benin@esgis.org
Libreville : BP 1359 Tél : (241) 05 45 45 24 E-mail : esgis.gabon@esgis.org
Site Web : www.esgis.org
INTRODUCTION AU
LANGAGE JAVA
Licence 1 Informatique, Réseaux et Télécommunications
Année académique 2020-2021
Apparu fin 1995 début 1996 et développé par Sun Microsystems Java s'est très rapidement taillé
une place importante en particulier dans le domaine de l'internet et des applications client-serveur.
Les objectifs de java sont d'être multi-plateformes et d'assurer la sécurité aussi bien pendant le
développement que pendant l'utilisation d'un programme java. Il est en passe de détrôner le langage
C++ dont il hérite partiellement la syntaxe mais non ses défauts. Comme C++ et Delphi, java est
algorithmique et orienté objet à ce titre il peut effectuer comme ses compagnons, toutes les tâches
d'un tel langage (bureautiques, graphiques, multimédias, bases de données, environnement de
développement, etc...). Son point fort qui le démarque des autres est sa portabilité due (en théorie)
à ses bibliothèques de classes indépendantes de la plate-forme, ce qui est le point essentiel de la
programmation sur internet ou plusieurs machines dissemblables sont interconnectées.
• Les applications qui sont des logiciels classiques s'exécutant directement sur une plate-
forme spécifique soit à travers une machine virtuelle java soit directement en code
exécutable par le système d'exploitation. (code natif).
• les applets qui sont des programmes java insérés dans un document HTML s'exécutant à
travers la machine virtuelle java du navigateur lisant le document HTML.
Le JRE contient tout le nécessaire pour que vos programmes Java puissent être exécutés sur votre
ordinateur ; le JDK, en plus de contenir le JRE, contient tout le nécessaire pour développer,
compiler…
• J2SE (Java 2 Standard Edition, celui qui nous intéresse dans cet ouvrage) : permet de
développer des applications dites « client lourd », par exemple Word, Excel, la suite
OpenOffice.org… Toutes ces applications sont des « clients lourds » . C'est ce que nous
allons faire dans ce cours
• Java EE (Java Enterprise Edition) : permet de développer des applications web en Java.
On parle aussi de clients légers.
• J2ME (Java 2 Micro Edition) : permet de développer des applications pour appareils
portables, comme des téléphones portables, des PDA…
Ë Eclispe IDE
« Eclipse IDE » est un environnement de développement libre permettant de créer des programmes
dans de nombreux langages de programmation (Java, C++, PHP…). C'est l'outil que nous allons
utiliser pour programmer.
Eclipse IDE est lui-même principalement écrit en Java.
La spécificité d'Eclipse IDE vient du fait que son architecture est totalement développée autour
de la notion de plugin. Cela signifie que toutes ses fonctionnalités sont développées en tant que
plugins. Pour faire court, si vous voulez ajouter des fonctionnalités à Eclipse, vous devez :
Ë Netbeans
Ë Intellij IDEA
2. Votre premier programme en Java
Les programmes Java sont, avant d'être utilisés par la machine virtuelle, précompilés en byte code
(par votre IDE ou à la main). Ce byte code n'est compréhensible que par une JVM, et c'est celle-ci
qui va faire le lien entre ce code et votre machine.
un byte code (il existe plusieurs types de byte code, mais nous parlons ici de celui créé par Java)
n'est rien d'autre qu'un code intermédiaire entre votre code Java et le code machine. Ce code
particulier se trouve dans les fichiers précompilés de vos programmes ; en Java, un fichier source
a pour extension .java et un fichier précompilé a l'extension .class : c'est dans ce dernier que vous
trouverez du byte code. Je vous invite à examiner un fichier .class à la fin de cette partie (vous en
aurez au moins un), mais je vous préviens, c'est illisible !
Par contre, vos fichiers .java sont de simples fichiers texte dont l'extension a été changée. Vous
pouvez donc les ouvrir, les créer ou encore les mettre à jour avec le Bloc-notes de Windows, par
exemple. Cela implique que, si vous le souhaitez, vous pouvez écrire des programmes Java avec
le Bloc-notes ou encore avec Notepad++
Tous les programmes Java sont composés d'au moins une classe. Elle doit contenir une
méthode appelée main : ce sera le point de démarrage de notre programme.
Une méthode est une suite d'instructions à exécuter. C'est un morceau de logique de notre
programme. Une méthode contient :
Hello World
• System : ceci correspond à l'appel d'une classe qui se nomme « System » . C'est une classe
utilitaire qui permet surtout d'utiliser l'entrée et la sortie standard, c'est-à-dire la saisie
clavier et l'affichage à l'écran.
• out : objet de la classe System qui gère la sortie standard.
• print : méthode qui écrit dans la console le texte passé en paramètre (entre les parenthèses).
Lorsque vous l'exécutez, vous devriez voir des chaînes de caractères qui se suivent sans saut de
ligne. Autrement dit, ceci s'affichera dans votre console :
vous souhaiteriez insérer un retour à la ligne pour que votre texte soit plus lisible… Pour cela,
vous avez plusieurs solutions :
Donc, si nous reprenons notre code précédent et que nous appliquons cela, voici ce que ça
donnerait :
• lorsque vous utilisez le caractère d'échappement \n, quelle que soit la méthode appelée,
celle-ci ajoute immédiatement un retour à la ligne à son emplacement ;
• lorsque vous utilisez la méthode println(), celle-ci ajoute automatiquement un retour à la
ligne à la fin de la chaîne passée en paramètre ;
• un caractère d'échappement peut être mis dans la méthode println().
1. \r va insérer un retour chariot, parfois utilisé aussi pour les retours à la ligne ;
2. \t va faire une tabulation.
En résumé
Dans ce chapitre, nous allons découvrir les variables. On les retrouve dans la quasi-totalité des
langages de programmation. Une variable est un élément qui stocke des informations de toute
sorte en mémoire : des chiffres, des résultats de calcul, des tableaux, des renseignements fournis
par l'utilisateur…
1. Petit rappel
Un petit rappel sur le fonctionnement d'un ordinateur et particulièrement sur la façon dont ce
dernier interprète notre façon de voir le monde…
Vous n'êtes pas sans savoir que votre ordinateur ne parle qu'une seule langue : le binaire ! Le
langage binaire est une simple suite de 0 et de 1. Vous devez vous rendre compte qu'il nous
serait très difficile, en tant qu'êtres humains, d'écrire des programmes informatiques pour
expliquer à nos ordinateurs ce qu'ils doivent faire, entièrement en binaire… Vous imaginez !
Des millions de 0 et de 1 qui se suivent ! Non, ce n'était pas possible ! De ce fait, des langages
de programmation ont été créés afin que nous ayons à disposition des instructions claires pour
créer nos programmes. Ces programmes sont ensuite compilés pour que nos instructions
humainement compréhensibles soient, après coup, compréhensible par votre machine.
Le langage binaire est donc une suite de 0 et de 1 qu'on appelle bit. Si vous êtes habitués à la
manipulation de fichiers (audio, vidéos, etc.) vous devez savoir qu'il existe plusieurs catégories
de poids de programme (Ko, Mo, Go, etc.). Tous ces poids correspondent au système métrique
informatique. Le tableau suivant présente les poids les plus fréquemment rencontrés :
Cette opération se termine toujours par un point-virgule « ; » (comme toutes les instructions de
ce langage). Ensuite, on l'initialise en entrant une valeur.
Ce qu'on appelle des types simples ou types primitifs, en Java, ce sont tout bonnement des
nombres entiers, des nombres réels, des booléens ou encore des caractères, et vous allez voir
qu'il y a plusieurs façons de déclarer certains de ces types.
a. Le type byte (1 octet) peut contenir les entiers entre -128 et +127.
1 byte temperature;
2 temperature = 64;
b. Le type short (2 octets) contient les entiers compris entre -32768 et +32767.
1 short vitesseMax;
2 vitesseMax = 32000;
c. Le type int (4 octets) va de -2*109 à 2*109 (2 et 9 zéros derrière… ce qui fait déjà un
joli nombre).
1 int temperatureSoleil;
2 temperatureSoleil = 15600000; //La température est
exprimée en kelvins
18 18
d. Le type long (8 octets) peut aller de −9∗10 à 9∗10 (encore plus gros…).
1 long anneeLumiere;
2 anneeLumiere = 9460700000000000L;
Afin d'informer la JVM que le type utilisé est long, vous DEVEZ ajouter un "L" à la fin de votre
nombre, sinon le compilateur essaiera d'allouer ce dernier dans une taille d'espace mémoire de type
entier et votre code ne compilera pas si votre nombre est trop grand…
e. Le type float (4 octets) est utilisé pour les nombres avec une virgule flottante.
1 float pi;
2 pi = 3.141592653f;
Ou encore :
1 float nombre;
2 nombre = 2.0f;
Remarque:
Nous ne mettons pas une virgule, mais un point ! Et vous remarquerez aussi que même si le nombre
en question est rond, on écrit « .0 » derrière celui-ci, le tout suivi de « f ».
f. Le type double (8 octets) est identique à float, si ce n'est qu'il contient plus de chiffres
derrière la virgule et qu'il n'a pas de suffixe.
1 double division;
2 division = 0.3333333333333333333333333333334d;
Remarque :
Ici encore, vous devez utiliser une lettre - le « d » - pour parfaire la déclaration de votre variable.
Le type char contient un caractère stocké entre apostrophes (« ' ' »), comme ceci :
1 char caractere;
2 caractere = 'A';
Le type boolean, lui, ne peut contenir que deux valeurs : true (vrai) ou false (faux), sans
guillemets (ces valeurs sont natives dans le langage, il les comprend directement et sait les
interpréter).
1 boolean question;
2 question = true;
Le type String permet de gérer les chaînes de caractères, c'est-à-dire le stockage de texte.
Il s'agit d'une variable d'un type plus complexe que l'on appelle objet. Vous verrez que celle-ci
s'utilise un peu différemment des variables précédentes :
1 //Première méthode de déclaration
2 String phrase;
3 phrase = "Titi et Grosminet";
4
5 //Deuxième méthode de déclaration
6 String str = new String();
7 str = "Une autre chaîne de caractères";
8
9 //Troisième méthode de déclaration
10 String string = "Une autre chaîne";
11
12 //Quatrième méthode de déclaration
13 String chaine = new String("Et une de plus !");
Attention :
String commence par une majuscule ! Et lors de l'initialisation, on utilise des doubles cotes (« " "
»).
String n'est pas un type de variable, mais un objet. Notre variable est un objet, on parle aussi d'une
instance : ici, une instance de la classe String.
Il s'agit d'une convention de nommage. En fait, c'est une façon d'appeler nos classes, nos variables,
etc. Il faut que vous essayiez de la respecter au maximum. Cette convention, la voici :
Remarque:
Veillez à bien respecter la casse (majuscules et minuscules), car une déclaration de CHAR à la
place de char ou autre chose provoquera une erreur, tout comme une variable de type string à la
place de String !
Faites donc bien attention lors de vos déclarations de variables… Une petite astuce quand même
(enfin deux, plutôt) : on peut très bien compacter les phases de déclaration et d'initialisation en
une seule phase ! Comme ceci :
Et lorsque nous avons plusieurs variables d'un même type, nous pouvons résumer tout ceci à une
déclaration :
Ici, toutes les variables sont des entiers, et toutes sont initialisées.
Type élémentaire Intervalle de variation Nombre de bits
3. Les opérateurs
3.1 Arithmétiques
Les opérateurs arithmétiques sont ceux que l'on apprend à l'école primaire… ou presque :
Ces opérateurs sont binaires (à deux opérandes) exceptés les opérateurs de signe positif ou négatif.
Ils travaillent tous avec des opérandes de types entiers ou réels. Le résultat de l'opération est
converti automatiquement en valeur du type des opérandes.
L'opérateur " % " de reste n'est intéressant que pour des calculs sur les entiers longs, courts, signés
ou non signés : il renvoie le reste de la division euclidienne de 2 entiers.
Exemples d’utilisation de l’opérateur de division selon les types des opérandes et du résultat :
résultat : int
y=b/2; erreur de conversion conversion automatique impossible
(float b --> int y)
y = b / 2.0 ; erreur de conversion conversion automatique impossible
(float b --> int y)
a=b/2; a = 2.5 // type float float b et int 2
résultat : float
a=x/2; a = 2.0 // type float int x et int 2
résultat : int
conversion automatique int 2 -->
float 2.0
a = x / 2f ; a = 2.5 // type float int x et float 2f
résultat : float
Pour l'instruction précédente " y = b / 2 " engendrant une erreur de conversion voici deux
corrections possibles utilisant le transtypage :
y = (int)b / 2 ; // b est converti en int avant la division qui s'effectue sur deux int.
y = (int)(b / 2) ; // c'est le résultat de la division qui est converti en int.