Vous êtes sur la page 1sur 70

UCLB

Présentation
Présentation du
du langage
langage Java
Java

Chapitre I

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 1
UCLB

11 -- Généralités
Généralités

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 2
UCLB
Caractéristiques
Caractéristiques générales
générales
 Java est un langage de programmation développé
par Sun Microsystems à partir des années 95

 C’est un langage " à objets "


 classes
 objets
 messages
 héritage

programmation objet uniquement

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 3
UCLB
Caractéristiques
Caractéristiques générales
générales
 Java est un langage sécurisé
 pas de pointeurs mais des références

 pas de dépassement d'indice de tableau

 pas de conversion implicite de types

 tous les objets sont créés dynamiquement

 nettoyage automatique de la mémoire

 complexité de l'héritage multiple contournée par la notion


d'interface
IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 4
UCLB
Caractéristiques
Caractéristiques générales
générales
 Java implémente des mécanismes avancés
 programmation parallèle
 multithread
 synchronisation, exclusion mutuelle, communication
 portabilité
 le compilateur génère un pseudo code (le byte-code)
 exécuté par la machine virtuelle propre à chaque
environnement
 distribution du code
 chargement dynamique
 code mobile

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 5
UCLB
Caractéristiques
Caractéristiques générales
générales
 Java est un langage simple

 syntaxe familière similaire à celle du C++


 le corpus des règles est limité
 les constructions sont simples
 les données sont typées suivant des standards
(C2, IEEE 754, Unicode)

La difficulté de programmation réside


essentiellement dans la maîtrise des
concepts objets (cf. cours C++)

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 6
UCLB

22 –– Développer
Développer avec
avec Java
Java

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 7
UCLB
Les
Les types
types d'application
d'application
 Programme Java
 p-code obtenu par la compilation d'un source écrit
en langage Java
 exécuté de manière autonome à l'aide de
l'interpréteur Java Virtual Machine (JVM).
 correspond à une application au sens classique
 Applet
 p-code invoqué depuis des documents HTML
 exécuté à l'intérieur du navigateur ou encore grâce
à un programme dédié l'appletviewer
 résidant sur le serveur et téléchargé via le réseau
IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 8
UCLB
Les
Les types
types d'application
d'application
 Mais aussi…

 Servlet Java = applet côté serveur et sans interface


utilisateur

 Java Beans = composants logiciels écrits en Java


et réutilisables
 JavaScript = langage frère de Java simplifié pour
être directement intégré dans une page HTML
afin d'effectuer des traitements sur le poste client

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 9
UCLB
Chaîne
Chaîne de
de développement
développement
1) Écriture à l'aide d'un éditeur du fichier source
d'extension .java (exemple NomFic.java)
2) Compilation du source
 pour compiler javac NomFic.java
 on obtient le fichier de byte-code NomFic.class
3) Exécution du byte-code
 pour une application java NomFic.class
 pour une applet on invoque le code à l'intérieur
d'une page HTML grâce aux balises
<applet code = "NomFic.class" …</applet>

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 10
UCLB
Chaîne
Chaîne de
de développement
développement
 Exemple de fichier source

// HelloWorld.java

public class HelloWorld {


public static void main(String[] args) {
System.out.println("Hello World!");
}
}

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 11
UCLB
Chaîne
Chaîne de
de développement
développement
 Remarques :

 tout fichier source .java doit avoir une classe


déclarée public portant le même nom que le fichier
sans l'extension (ici class HelloWorld )

 pas de fonctions ou de variables globales : même


le point d'entrée du programme main appartient à
une classe

 l'usage veut qu'un fichier source ne contienne


qu'une seule classe

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 12
UCLB
Chaîne
Chaîne de
de développement
développement
 Compilation et exécution avec le JDK

$javac HelloWorld.java

$java HelloWorld
Hello World!

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 13
UCLB
Chaîne
Chaîne de
de développement
développement
Fichier Exemple : HelloWorld.java
Fichiersource
source

Compilation
Compilation
javac HelloWorld.java

Programme
Programmecompilé
compilé HelloWorld.class
(p-code)
(p-code)

Moteur d’interprétation
p-code java HelloWorld
Registres / piles
virtuels
Machine virtuelle Java Système d'Exploitation
Unix, Windows, Mac, etc.
Source P.Emy CERTA

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 14
UCLB
Les
Les outils
outils
 Le minimum requis
 un éditeur de texte (exemple TextPad)
 javac le compilateur
 java l'interpréteur de byte-code
 Pour les applets il faut en plus
 soit le visualiseur appletviewer
 soit
 une connexion réseau
 la pile protocolaire TCP/IP
 un navigateur avec un interpréteur Java

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 15
UCLB
Les
Les outils
outils
 le JRE (Java Runtime Environment) représente la
machine virtuelle Java nécessaire pour exécuter
une application Java (dépend de la machine et du
système d'exploitation)
 le SDK (Standard Development Kit) anciennement
appelé JDK, comprend l'ensemble des outils pour
développemer une application Java
 une JRE,
 le compilateur et les bibliothèques
 divers outils comme javadoc ou jar

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 16
UCLB
Les
Les outils
outils
 L'utilitaire jar (Java Archive) permet
 d'archiver des classes Java
 mais aussi des fichiers image ou audio
 de distribuer ou d'installer une application
 Pour créer un fichier jar
 jar –options [path][…]
 options identiques à celles de l'utilitaire tar d'Unix
 Pour récupérer le contenu d'un fichier jar
 par la ligne de commande jar –t [path][…]
 dans une applet par
<APPLET CODE="….class" ARCHIVE="….jar" …>
IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 17
UCLB
Les
Les outils
outils
 Ces outils de base sont téléchargeables à partir
du site de Sun microsystems http://java.sun.com

 Il existe aussi de nombreux IDE


 Jbuilder de Borland
 Jdeveloper d'Oracle
 Visual Café de Symantec
 Websphere d'IBM
 les "open source" NetBeans et Eclipse

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 18
UCLB
Quelques
Quelques références
références
 Bibliographie
 HORSTMANN CORNELL, Au cœur de JAVA, Volume 1 et
volume 2, CAMPUSPRESS [1999]
 DELANNOY, Programmer en JAVA, EYROLLES [2000]
 LEMAY CADENHEAD, JAVA 2, CAMPUSPRESS [2002]
 HORTON, Maîtrisez Java 2, CAMPUSPRESS [2001]
 Quelques liens
 http://www.javasoft.com
 http://tek-tools.com
 http://www.gamelan.com
 http://cuiwww.unige.ch/java/doc/tutorial/java/index.html
 http://www.ensta.fr/java/java_liens.html

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 19
UCLB

33 -- Éléments
Éléments du
du langage
langage

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 20
UCLB
Mots
Mots réservés
réservés en
en Java
Java

abstract default if private throw


boolean do implements protected throws
break double import public transient
byte else instanceof return try
case extends int short void
catch final interface static volatile
char finally long super while
class float native switch
const for new synchronized
continue goto package this

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 21
UCLB
Les
Les identificateurs
identificateurs
 Identificateur = nom des différents éléments du
programme
 variable ex: totalGeneral
 constante ex: TAILLE
 méthode ex: int getX()
 classe ex: class MaClasse
 package ex: java.util.Vector

 Formé à partir de lettres, de chiffres et des


caractères _ et $ (à éviter comme premier caractère)

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 22
UCLB
Les
Les symboles
symboles
 Caractères ou groupe de caractères
pour représenter des opérateurs
 pour représenter des caractères spéciaux
 & ~ { } ( ) [ ] | \ / * - +
% , ; . < > = ! ^ ? :

 Exemples:
 == opérateur d'égalité
 >>> opérateur de décalage binaire à droite non
signé

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 23
UCLB
Les
Les commentaires
commentaires
 3 styles de commentaires
 plusieurs lignes
/* ceci est un commentaire
qui se termine ici */
 sur une ligne
// commentaire sur une ligne
 destiné au générateur automatique de documentation
JavaDoc
/** commentaire destiné à l'outil de
documentation automatique */

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 24
UCLB
Les
Les commentaires
commentaires JavaDoc
JavaDoc
 Ils permettent de documenter la classe en même
temps que le codage

 Le programme javadoc génère des fichiers HTML


de documentation à partir des fichiers Java

 On peut inclure du code HTML dans les


commentaires Javadoc

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 25
UCLB
Les
Les commentaires
commentaires JavaDoc
JavaDoc
 Permet de décrire si nécessaire pour une classe
 ses spécifications
 sa version
 son auteur

 Dans la classe on peut également


 préciser le rôle de chaque attribut
 décrire les méthodes (paramètres, valeur retournée,
exceptions pouvant être éventuellement générer)
meilleure lisibilité du programme

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 26
UCLB
Les
Les types
types en
en Java
Java
 Les types en Java se classent en 2 catégories
 les types primitifs ou types de base
 les caractères
 les entiers
 les réels
 les booléens
 les types références
 les tableaux
 tous les objets manipulés
Important pour le passage de paramètres
aux méthodes qui se fait par valeur
IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 27
UCLB
Les
Les types
types primitifs
primitifs
 Entier:
 type codé en C2
 byte 1 Ø, short 2 Ø, int 4 Ø, long 8 Ø

 Réel:
 type codé en IEEE 754
 float 4 Ø, double 8 Ø

 Caractère : type char codé en Unicode sur 2 Ø

 Booléens: type boolean codé sur 1 bit


IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 28
UCLB
Les
Les types
types primitifs
primitifs

Type primitif Valeurs possibles Valeur par défaut


boolean true / false false
char '\u0000' à '\uFFFF' '\u0000' (null)
byte -128 à 127 (byte)0
short -215 à 215-1 (short)0
int -231 à 231-1 0
long -263 à 263-1 0L
-3.4028235e+38f à
float 0.0f
3.4028235e+38f
-1.7976931348623157e+308 à
double 0.0d
1.7976931348623157e+308
void - -

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 29
UCLB
Les
Les types
types primitifs
primitifs
 Codage des caractères
 ASCII sur 128 premiers caractères
 les 128 autres = caractères des divers langages
 les suivants = divers symboles 
 Les caractères sont écrits entre ’ainsi la séquence
’\uNNNN’ désigne le caractère dont la valeur Unicode
est NNNN

 ’\u0020’signifie blanc ( identique à ' ')


 ’\u0041’signifie A ( identique à 'A')
 ’\’’ signifie’
 ’\\’ signifie\

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 30
UCLB
Les
Les variables
variables
 Déclaration identique au C++
 Type variable; Type variable = valeur;
 Une variable représente
 soit l'attribut d'une classe
 soit une variable de classe
 soit une variable locale à une méthode de classe
 Caractéristiques
 conversion toujours explicite et identique au C
var1 = (type_force) var2;
 portée limitée au bloc { } de déclaration

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 31
UCLB
Les
Les variables
variables
 Exemples :
boolean encore = true; // initialisation à vrai
int x = 10; // decimal
int x = 0x0A; // hexadécimal
int x = 10L; // entier long
float y = 6.55957F; // réel simple précision
x = (int) y; // transtypage d'un réel vers un int
float z = -2.45E-3F; // réel avec exposant
double pi = 3.14159D; // réel double précision
char rep = 'n';
char rep = '\u006e'; // code ASCII de 'n'

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 32
UCLB
Les
Les constantes
constantes
 Une constante est définie à l'aide de final et est
toujours initialisée
 final type MACONSTANTE = valeur;
 Exemples:
final float CM_PAR_POUCE = 2.54F;
final double E = 2.71828182845905D;

 Une constante de classe est définie à l'aide de


static final
 Exemple:
static final float PI = 3.14159F;

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 33
UCLB
Les
Les constantes
constantes
 Caractères spéciaux:

 '\b' caractère backspace (retour arrière)


 '\f' caractère saut de page (formfeed)
 '\n' caractère saut de ligne (new line)
 '\r' caractère retour chariot
 '\t' caractère de tabulation
 '\\' caractère \
 '\'' caractère '

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 34
UCLB
Les
Les opérateurs
opérateurs
 Opérateur d'affectation
=
 Opérateurs arithmétiques
+ - * / % ++ -- += -= *= /= %=
 Opérateurs relationnels
> >= == != < <=
 Opérateurs logiques
&& || !
 Opérateurs binaires
& | ^ ~ >> << >>>

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 35
UCLB
Les
Les opérateurs
opérateurs
 L'opérateur logique ?
 composé de trois expressions
 expression1 ? expression2 : expression3
 si expression1 vraie alors expression2
 sinon expression3
 valabs = (x >= 0) ? x : -x;

 Opérateur d'allocation mémoire


new

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 36
UCLB
Priorité
Priorité des
des opérateurs
opérateurs
Opérateur par ordre décroissant et de gauche à droite
. [] () new
++ -- ! ~ instanceof
* / %
+ -
<< >> >>>
< > <= >=
== !=
&
^
|
&&
||
?:
= *= /= %= += -= <<= >>=
>>>= &= ^= |=
,

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 37
UCLB

44 –– Les
Les structures
structures de
de contrôle
contrôle

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 38
UCLB
Les
Les structures
structures de
de contrôle
contrôle
 L'alternative
 if (<expression_logique>)
<bloc1>
else
<bloc2>
 un bloc commence par { et finit par }
 Alternatives imbriquées
 if (<expr1>)
<bloc1>
else if (<expr2>)
<bloc2>
else if (expr3>)
<bloc3>
else
<bloc4>

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 39
UCLB
Les
Les structures
structures de
de contrôle
contrôle
 Le choix multiple

switch (<expression_entière>) {
case valeur_1: ......;
break;
case valeur_2: ......;
......;
case valeur-n: ......;
......;
break;
default: ......;
......;
}

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 40
UCLB
Les
Les structures
structures de
de contrôle
contrôle
 Le choix multiple (suite)
 branchement lorsque l'expression entière est égale à
une des valeurs des case
 branchement à default si aucune valeur trouvée
 passe en séquence jusqu'au premier break
ou fin du switch
switch (rep) { /* on teste la valeur du caractère rep */
case ' ' : nb_space++;
break;
case '\n':
case '\0': fini=1;
break; /* fini=1 pour rep ='\n' ou '\0' */
default : nb_car++;
}

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 41
UCLB
Les
Les structures
structures de
de contrôle
contrôle
 L'itération bornée
 traduction du pour
 for(<expr1>;<expr2>;<expr3>)
<bloc>
 expr1 effectuée 1 fois pour toutes
 expr2 condition de maintien
 expr3 effectuée à la fin de chaque boucle
 nombre de passages 0 à n

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 42
UCLB
Les
Les structures
structures de
de contrôle
contrôle
 La répétitive tant que
 while(<expression >)
<bloc>
 expression condition de maintien
 nombre de passages 0 à n
 La répétitive répéter tant que
 do
<bloc> while (<expression>) ;
 nombre de passages 1 à n

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 43
UCLB
Les
Les structures
structures de
de contrôle
contrôle
 L'instruction break permet de sortir
 d'un switch
 d'un for
 d'un while
 d'un do

for(;;) {
if (EVENEMENT) break;
/* si EVENEMENT devient VRAI on sort */
}

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 44
UCLB
Les
Les structures
structures de
de contrôle
contrôle
 L'instruction continue force le branchement en
fin de boucle d'une répétitive
 la condition de passage est retestée
 évite l'écriture d'un sinon

while (i<10) {
.......;
.......;
if (n<0) continue;
.......; /* traitement si n >= 0 */
}

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 45
UCLB

55 –– Compléments
Compléments

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 46
UCLB
Les
Les packages
packages
 Un package regroupe des classes et des
interfaces qui portent sur un même domaine
 Pour utiliser une classe d'un package
 soit il faut la préfixer avec le nom du package
 soit on utilise la directive import
 import java.util.* importe toutes les classes du
package
 import java.util.vector importe la classe
vector du package java.util
 Exemple de packages inclus dans le SDK
java.lang java.io java.util java.net
IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 47
UCLB
Les
Les packages
packages
 Pour créer son propre package
 il faut ajouter package <nom_package> dans
chaque fichier source .java devant composer le
package
 il faut s'assurer qu'il n'existe pas de classes
homonymes
 Lorsqu'on ne spécifie pas de package dans un
fichier source, les classes créées appartiennent
au package par défaut

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 48
UCLB
Les
Les exceptions
exceptions
 Permet le traitement uniforme et structuré des
anomalies survenant lors de l'exécution d'un
programme

 Mécanisme identique à celui du C++

 Mais en Java, toutes les exceptions sont des


objets de la classe Exception

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 49
UCLB
Les
Les exceptions
exceptions
 Principe
 si on appelle une méthode susceptible de lancer
une exception, on se porte candidat par le bloc try
 si une erreur survient dans la méthode appelée,
cette dernière lance une exception par throw
 l'appelant intercepte l'exception grâce au bloc
gestionnaire d'exception catch
 il y a un gestionnaire par type d'exception
 le bloc finally est exécuté dans tout les cas et en
dernier s'il existe

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 50
UCLB
Les
Les exceptions
exceptions
 Schéma général de traitement des exceptions
try
{
// bloc de code pouvant générer l'exception
}
catch(TypeException1 e)
{
// traitement approprié pour ce type d'exception
}
catch(TypeException2 e)
{
// traitement approprié pour ce type d'exception
}
finally
{
// bloc facultatif mais toujours exécuté si présent
}

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 51
UCLB
Interception
Interception d'une
d'une exception
exception
try
{
Methode();

Void Methode() throws T }


catch (T param)
{ {
... ...
if (probleme) }
throw new T(); ...
... ...
}

type T de l'exception

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 52
UCLB
Les
Les exceptions
exceptions
 Méthode susceptible de générer des exceptions
propagées vers l'appelant
 on déclare dans son en-tête les exceptions qu'elle
peut lancer par throws TypeExc1, TypeExc2 ,..
 mais les exceptions héritant de Error ou de
RuntimeException ne se déclarent pas
 l'exception est lancée par throw <exception>
 soit il s'agit d'une instance de la hiérarchie Exception
 soit il s'agit d'une instance d'une classe personnelle
d'exception qui doit héritée de Exception

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 53
UCLB
Les
Les exceptions
exceptions
 Capture des exceptions par l'appelant
 se fait par le gestionnaire catch pour le type voulu
 si on souhaite que le gestionnaire traite tout type
d'exception, on indique Exception comme type
catch (Exception e)
 si une exception n'est pas traitée à un niveau
(gestionnaire absent ou de type inadapté), sa
gestion est déléguée au niveau supérieur
 si l'exception sort de la méthode main sans être
gérée, elle est alors traitée par la machine Java

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 54
UCLB
Les
Les chaînes
chaînes de
de caractères
caractères
 En Java il n'y a pas de type chaîne prédéfini

 On utilise pour cela la classe String fournie


d'origine avec le langage

 Il existe aussi une classe StringBuffer de


chaînes modifiables

 Ces classes font partie du package java.lang


reconnu de façon implicite
IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 55
UCLB
Les
Les chaînes
chaînes de
de caractères
caractères
 Les opérations courantes de la classe String:
 concaténation + et +=
 longueur length
 égalité equals et equalsIgnoreCase et non == qui
porte sur références, de même pour la comparaison qui se
fait par compareTo
 extraction substring
 transformation en un tableau de char toCharArray
 changer la casse toUpperCase et toLowerCase
 suppression des espaces de début et fin trim
 etc., etc.  voir l'aide pour les autres méthodes

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 56
UCLB
Les
Les chaînes
chaînes de
de caractères
caractères
 Exemples
String ch1 = "essai d'une chaine";
String ch2 = new String ("Bonjour");
// on récupère les 3 premiers car de ch2
String ch3 = ch2.substring(0,3);
int n = ch3.length(); // longueur de ch1
ch2 = ch2 + " tout le monde";
if (ch3.equals("Bon") == true)
………
if (ch3.compareTo(ch1) >= 0)
………

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 57
UCLB
Les
Les tableaux
tableaux
 Sont des objets créés dynamiquement
 Déclaration
type nomTableau[]; ou type[] nomTableau;
 Puis allocation mémoire
nomTableau = new type[tailleTableau];
 Déclaration et allocation mémoire
type nomTableau[] = new type[tailleTableau];
 Déclaration et initialisation
type nomTableau[] = {val1, val2, val3,...valn};

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 58
UCLB
Les
Les tableaux
tableaux
 Comme en C l'indice du premier élément est 0
 Le champ length d'un tableau donne la
dimension du tableau
 Par sécurité, Java déclenche les exceptions
 ArrayIndexOutOfBoundsException si le rang
d'un élément est invalide
 NegativeArraySizeException si la taille est
négative à la création du tableau
 ArrayStoreException si on tente de stocker un
élément de type incompatible

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 59
UCLB
Les
Les tableaux
tableaux
 Exemples
// déclaration
String tabJour[] = {"Lundi","Mardi","Mercredi"};
short [ ][ ]mat = {{5, 2, 33,-8}, {1, 2, 3, -7}};
int [ ] tabVide = {};
int tabEntiers[] = new int[5];

// parcours
for(i=0;i<tabEntiers.length;i++)
tabEntiers[i]=i+1;
for(lig=0;lig<2;lig++)
for (col=0;col<4;col++)
...

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 60
UCLB
Les
Les tableaux
tableaux
 Un tableau est en fait une référence, donc:
 il faut penser à l'allocation mémoire sauf s'il est
initialisé à la déclaration
 il peut être modifié s'il est passé en argument à une
méthode
 une méthode de classe peut retourner un tableau
 l'affectation entre tableaux de même type porte sur
les références (la copie physique se fait par la
méthode arraycopy de la classe System)
Ne pas oublier: en Java il y a une gestion
automatique de la mémoire
IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 61
UCLB
Sortie
Sortie écran
écran en
en mode
mode texte
texte
 La classe System comprend 3 canaux d'E/S
 écran out
 clavier in
 erreurs err
 Pour l'affichage à l'écran on utilise 2 méthodes
 System.out.print et System.out.println qui
fait un saut de ligne après l'affichage
 qui prennent en argument une chaîne de caractères
 toute variable  son type peut être concaténée
avec l'opérateur + pour former la chaîne d'affichage

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 62
UCLB
Sortie
Sortie écran
écran en
en mode
mode texte
texte
 Exemple:
public class TestAffichage
{
public static void main(String[] argv)
{
// variables locales
int x = 3;
char c='o';
float z = -2.45E-3F;
String ch = "essai";
// affichage
System.out.println(" x = : " +x +" et z = : " +z);
System.out.println("\n c = : " +c +" et ch = : " + ch );
}
}

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 63
UCLB
Entrée
Entrée clavier
clavier en
en mode
mode texte
texte
 La saisie en mode texte est compliquée
 inclusion du package java.io.*

 utilisation de la classe BufferedReader pour la


lecture du flux d'entrée
 déclaration d’un buffer d’entrée
 saisie d’une chaîne par la méthode readLine()
 conversion de la chaîne saisie en entier, en byte, en
entier ou en réel

 mise en oeuvre d'une gestion des exceptions

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 64
UCLB
Entrée
Entrée clavier
clavier en
en mode
mode texte
texte
 Exemples de saisie
import java.io.*;
class TestSaisie
{
public static void main(String args[])
throws IOException, NumberFormatException
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader rep = new BufferedReader(isr);

System.out.print("Entrez une chaine : ");


String saisie = rep.readLine();
System.out.println("Voici la chaine saisie : "+ saisie);

System.out.print("Entrez un entier : ");


int i = Integer.parseInt(rep.readLine());
System.out.println("l'entier i = "+ i);

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 65
UCLB
Entrée
Entrée clavier
clavier en
en mode
mode texte
texte
 Exemples de saisie (suite)
System.out.print("Entrez un reel : ");
float f = Float.parseFloat(rep.readLine());
System.out.println("le reel f = "+ f);

// cas d'un caractère


System.out.print("Entrez un caractere : ");
String valeur = rep.readLine() ;
char c = valeur.charAt(0); System.out.println("le
caractere vaut = "+ c);

} // public static void main

} // class TestSaisie

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 66
UCLB
Entrée
Entrée clavier
clavier en
en mode
mode texte
texte
 Exemple avec gestion des exceptions
import java.io.*;
public class TestSaisieExcep
{
public static void main(String args[])
{
// saisie d'un réel avec gestion des exceptions
int x = 0; // entier à saisir
System.out.print("Entrez un entier : ");

try {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader rep = new BufferedReader(isr);
x = Integer.parseInt(rep.readLine());
}

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 67
UCLB
Entrée
Entrée clavier
clavier en
en mode
mode texte
texte
 Exemple avec gestion des exceptions (suite)
// exception éventuellement générée par readLine
catch (IOException e)
{
System.out.println("ERREUR DE SAISIE \n\n");
}

// exception éventuellement générée par parseInt


catch (NumberFormatException e)
{
System.out.println("ERREUR DE TYPE \n\n");
}

System.out.println("l'entier vaut : "+ x);

} // public static void main


} // class TestSaisie

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 68
UCLB
Application
Application
 Définition d'un tableau de taille dynamique
avec remplissage aléatoire
import java.io.*;
import java.util.*;

public class TestTableau


{
public static void main(String[] argv)throws IOException
{
// saisie de la dimension du tableau
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader rep = new BufferedReader(isr);
System.out.print("Entrez un entier : ");
int taille = Integer.parseInt(rep.readLine());

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 69
UCLB
Application
Application
 Définition d'un tableau de taille dynamique
avec remplissage aléatoire
// dimensionnement dynamique du tableau d'entiers
int tabEntiers [] = new int[taille];

// remplissage aléatoire d'entiers compris entre 0 et 50


Random r = new Random();
for(int i=0;i<tabEntiers.length;i++)
tabEntiers[i]=Math.abs(r.nextInt()%51);

// affichage du tableau
for(int i=0;i<tabEntiers.length;i++)
System.out.println("\n "+tabEntiers[i]);

} // fin de main
} // fin de TestTableau

IUT A Informatique
~ A. P. ~
~ Cours Java ~ Chapitre 1 70