~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
1
Chapitre I
Présentation du langage JavaPrésentation du langage JavaPrésentation du langage JavaPrésentation du langage Java
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
2
1 - Généralités1 - Généralités1 - Généralités1 - Généralités
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
3
Caractéristiques généralesCaractéristiques généralesCaractéristiques généralesCaractéristiques générales
Java est un langage de programmation développé par Sun Microsystems à partir des années 95
C’est un langage " à objets " classesobjetsmessageshéritage
programmation objet uniquement
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
4
Caractéristiques généralesCaractéristiques généralesCaractéristiques généralesCaractéristiques 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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
5
Caractéristiques généralesCaractéristiques généralesCaractéristiques généralesCaractéristiques générales
Java implémente des mécanismes avancésprogrammation parallèle
multithreadsynchronisation, exclusion mutuelle, communication
portabilitéle compilateur génère un pseudo code (le byte-code)exécuté par la machine virtuelle propre à chaque
environnementdistribution du code
chargement dynamiquecode mobile
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
6
Caractéristiques généralesCaractéristiques généralesCaractéristiques généralesCaractéristiques 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 simplesles 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++)
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
7
2 – Développer avec Java2 – Développer avec Java2 – Développer avec Java2 – Développer avec Java
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
8
Les types d'applicationLes types d'applicationLes types d'applicationLes types d'application
Programme Javap-code obtenu par la compilation d'un source écrit
en langage Javaexécuté de manière autonome à l'aide de
l'interpréteur Java Virtual Machine (JVM). correspond à une application au sens classique
Appletp-code invoqué depuis des documents HTMLexécuté à l'intérieur du navigateur ou encore grâce
à un programme dédié l'appletviewerrésidant sur le serveur et téléchargé via le réseau
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
9
Les types d'applicationLes types d'applicationLes types d'applicationLes types 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 HTMLafin d'effectuer des traitements sur le poste client
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
10
Chaîne de développementChaîne de développementChaîne de développementChaîne de 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>
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
11
Chaîne de développementChaîne de développementChaîne de développementChaîne de développement
Exemple de fichier source
// HelloWorld.java
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
12
Chaîne de développementChaîne de développementChaîne de développementChaîne de 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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
13
Chaîne de développementChaîne de développementChaîne de développementChaîne de développement
Compilation et exécution avec le JDK
$javac HelloWorld.java
$java HelloWorldHello World!
$
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
14
Chaîne de développementChaîne de développementChaîne de développementChaîne de développement
Exemple : HelloWorld.java
javac HelloWorld.java
HelloWorld.class
Fichier sourceFichier source
Programme compilé(p-code)
Programme compilé(p-code)
CompilationCompilation
Moteur d’interprétationp-code
Registres / pilesvirtuels
Machine virtuelle Java Système d'ExploitationUnix, Windows, Mac, etc.
java HelloWorld
Source P.Emy CERTA
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
15
Les outilsLes outilsLes outilsLes outils
Le minimum requisun éditeur de texte (exemple TextPad)javac le compilateurjava l'interpréteur de byte-code
Pour les applets il faut en plus soit le visualiseur appletviewer soit
une connexion réseaula pile protocolaire TCP/IPun navigateur avec un interpréteur Java
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
16
Les outilsLes outilsLes outilsLes 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 Javaune JRE, le compilateur et les bibliothèques divers outils comme javadoc ou jar
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
17
Les outilsLes outilsLes outilsLes outils
L'utilitaire jar (Java Archive) permetd'archiver des classes Javamais aussi des fichiers image ou audio de distribuer ou d'installer une application
Pour créer un fichier jarjar –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" …>
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
18
Les outilsLes outilsLes outilsLes 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 BorlandJdeveloper d'Oracle Visual Café de Symantec Websphere d'IBMles "open source" NetBeans et Eclipse
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
19
Quelques référencesQuelques référencesQuelques référencesQuelques références
BibliographieHORSTMANN 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 lienshttp://www.javasoft.comhttp://tek-tools.comhttp://www.gamelan.comhttp://cuiwww.unige.ch/java/doc/tutorial/java/index.html http://www.ensta.fr/java/java_liens.html
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
20
3 - Éléments du langage3 - Éléments du langage3 - Éléments du langage3 - Éléments du langage
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
21
Mots réservés en JavaMots réservés en JavaMots réservés en JavaMots réservés en 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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
22
Les identificateursLes identificateursLes identificateursLes identificateurs
Identificateur = nom des différents éléments du programmevariable ex: totalGeneralconstante ex: TAILLE méthode ex: int getX() classe ex: class MaClassepackage ex: java.util.Vector
Formé à partir de lettres, de chiffres et des caractères _ et $ (à éviter comme premier caractère)
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
23
Les symbolesLes symbolesLes symbolesLes symboles
Caractères ou groupe de caractèrespour représenter des opérateurspour représenter des caractères spéciaux & ~ { } ( ) [ ] | \ / * - + % , ; . < > = ! ^ ? :
Exemples:== opérateur d'égalité>>> opérateur de décalage binaire à droite non
signé
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
24
Les commentairesLes commentairesLes commentairesLes 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 */
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
25
Les commentaires JavaDocLes commentaires JavaDocLes commentaires JavaDocLes commentaires 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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
26
Les commentaires JavaDocLes commentaires JavaDocLes commentaires JavaDocLes commentaires JavaDoc
Permet de décrire si nécessaire pour une classe ses spécifications sa version son auteur
Dans la classe on peut égalementpré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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
27
Les types en JavaLes types en JavaLes types en JavaLes types en Java
Les types en Java se classent en 2 catégoriesles types primitifs ou types de base
les caractèresles entiersles réelsles booléens
les types référencesles tableauxtous les objets manipulés
Important pour le passage de paramètres aux méthodes qui se fait par valeur
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
28
Les types primitifsLes types primitifsLes types primitifsLes types primitifs
Entier:type codé en C2 byte 1 Ø, short 2 Ø, int 4 Ø, long 8 Ø
Réel:type codé en IEEE 754float 4 Ø, double 8 Ø
Caractère : type char codé en Unicode sur 2 Ø
Booléens: type boolean codé sur 1 bit
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
29
Les types primitifsLes types primitifsLes types primitifsLes types 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
float -3.4028235e+38f à 3.4028235e+38f
0.0f
double -1.7976931348623157e+308 à 1.7976931348623157e+308 0.0d
void - -
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
30
Les types primitifsLes types primitifsLes types primitifsLes types primitifs
Codage des caractères ASCII sur 128 premiers caractères les 128 autres = caractères des divers langagesles 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 \
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
31
Les variablesLes variablesLes variablesLes variables
Déclaration identique au C++Type variable; Type variable = valeur;
Une variable représente soit l'attribut d'une classesoit une variable de classesoit une variable locale à une méthode de classe
Caractéristiquesconversion toujours explicite et identique au Cvar1 = (type_force) var2;
portée limitée au bloc { } de déclaration
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
32
Les variablesLes variablesLes variablesLes variables
Exemples :boolean encore = true; // initialisation à vraiint 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écisionchar rep = 'n'; char rep = '\u006e'; // code ASCII de 'n'
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
33
Les constantesLes constantesLes constantesLes constantes
Une constante est définie à l'aide de final et est toujours initialiséefinal 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 finalExemple:
static final float PI = 3.14159F;
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
34
Les constantesLes constantesLes constantesLes 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 '
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
35
Les opérateursLes opérateursLes opérateursLes opérateurs
Opérateur d'affectation=
Opérateurs arithmétiques + - * / % ++ -- += -= *= /= %=
Opérateurs relationnels > >= == != < <=
Opérateurs logiques && || !
Opérateurs binaires & | ^ ~ >> << >>>
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
36
Les opérateursLes opérateursLes opérateursLes opérateurs
L'opérateur logique ?composé de trois expressionsexpression1 ? expression2 : expression3si expression1 vraie alors expression2sinon expression3valabs = (x >= 0) ? x : -x;
Opérateur d'allocation mémoire new
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
37
Priorité des opérateursPriorité des opérateursPriorité des opérateursPriorité des opérateurs
Opérateur par ordre décroissant et de gauche à droite . [] () new ++ -- ! ~ instanceof * / % + - << >> >>> < > <= >= == != & ^ | && || ?: = *= /= %= += -= <<= >>= >>>= &= ^= |= ,
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
38
4 – Les structures de contrôle4 – Les structures de contrôle4 – Les structures de contrôle4 – Les structures de contrôle
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
39
Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle
L'alternativeif (<expression_logique>)
<bloc1>else
<bloc2>un bloc commence par { et finit par }
Alternatives imbriquéesif (<expr1>)
<bloc1>else if (<expr2>)
<bloc2>else if (expr3>)
<bloc3>else
<bloc4>
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
40
Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle
Le choix multiple
switch (<expression_entière>) {case valeur_1: ......;
break;case valeur_2: ......;
......;case valeur-n: ......;
......;break;
default: ......;......;
}
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
41
Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle
Le choix multiple (suite)branchement lorsque l'expression entière est égale à
une des valeurs des casebranchement à default si aucune valeur trouvéepasse 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++;
}
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
42
Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle
L'itération bornéetraduction du pourfor(<expr1>;<expr2>;<expr3>)
<bloc>expr1 effectuée 1 fois pour toutesexpr2 condition de maintienexpr3 effectuée à la fin de chaque boucle
nombre de passages 0 à n
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
43
Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle
La répétitive tant quewhile(<expression >)
<bloc>expression condition de maintien nombre de passages 0 à n
La répétitive répéter tant quedo<bloc> while (<expression>) ;
nombre de passages 1 à n
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
44
Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle
L'instruction break permet de sortird'un switchd'un ford'un whiled'un do
for(;;) { if (EVENEMENT) break; /* si EVENEMENT devient VRAI on sort */}
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
45
Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle
L'instruction continue force le branchement en fin de boucle d'une répétitivela condition de passage est retestéeévite l'écriture d'un sinon
while (i<10) {.......;
.......; if (n<0) continue;.......; /* traitement si n >= 0 */
}
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
46
5 – Compléments5 – Compléments5 – Compléments5 – Compléments
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
47
Les packagesLes packagesLes packagesLes packages
Un package regroupe des classes et des interfaces qui portent sur un même domaine
Pour utiliser une classe d'un packagesoit il faut la préfixer avec le nom du packagesoit 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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
48
Les packagesLes packagesLes packagesLes packages
Pour créer son propre packageil 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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
49
Les exceptionsLes exceptionsLes exceptionsLes 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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
50
Les exceptionsLes exceptionsLes exceptionsLes exceptions
Principesi on appelle une méthode susceptible de lancer
une exception, on se porte candidat par le bloc trysi une erreur survient dans la méthode appelée,
cette dernière lance une exception par throwl'appelant intercepte l'exception grâce au bloc
gestionnaire d'exception catch il y a un gestionnaire par type d'exceptionle bloc finally est exécuté dans tout les cas et en
dernier s'il existe
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
51
Les exceptionsLes exceptionsLes exceptionsLes exceptions
Schéma général de traitement des exceptionstry { // 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 }
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
52
Interception d'une exceptionInterception d'une exceptionInterception d'une exceptionInterception d'une exception
Void Methode() throws T
{
...
if (probleme)
throw new T();
...
}
type T de l'exception
try {
Methode();
}
catch (T param){
...
}
...
...
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
53
Les exceptionsLes exceptionsLes exceptionsLes exceptions
Méthode susceptible de générer des exceptions propagées vers l'appelanton 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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
54
Les exceptionsLes exceptionsLes exceptionsLes exceptions
Capture des exceptions par l'appelantse fait par le gestionnaire catch pour le type voulusi on souhaite que le gestionnaire traite tout type
d'exception, on indique Exception comme typecatch (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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
55
Les chaînes de caractèresLes chaînes de caractèresLes chaînes de caractèresLes chaînes de 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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
56
Les chaînes de caractèresLes chaînes de caractèresLes chaînes de caractèresLes chaînes de 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 substringtransformation en un tableau de char toCharArray changer la casse toUpperCase et toLowerCasesuppression des espaces de début et fin trim etc., etc. voir l'aide pour les autres méthodes
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
57
Les chaînes de caractèresLes chaînes de caractèresLes chaînes de caractèresLes chaînes de 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)
… … …
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
58
Les tableauxLes tableauxLes tableauxLes tableaux
Sont des objets créés dynamiquementDé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};
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
59
Les tableauxLes tableauxLes tableauxLes tableaux
Comme en C l'indice du premier élément est 0Le champ length d'un tableau donne la
dimension du tableauPar 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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
60
Les tableauxLes tableauxLes tableauxLes tableaux
Exemples
// déclarationString 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++)
...
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
61
Les tableauxLes tableauxLes tableauxLes 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éclarationil peut être modifié s'il est passé en argument à
une méthodeune méthode de classe peut retourner un tableaul'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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
62
Sortie écran en mode texteSortie écran en mode texteSortie écran en mode texteSortie écran en mode texte
La classe System comprend 3 canaux d'E/Sécran outclavier inerreurs 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'affichagequi prennent en argument une chaîne de
caractèrestoute variable son type peut être concaténée
avec l'opérateur + pour former la chaîne d'affichage
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
63
Sortie écran en mode texteSortie écran en mode texteSortie écran en mode texteSortie écran en mode texte
Exemple:
public class TestAffichage{ public static void main(String[] argv) {
// variables localesint x = 3;char c='o';float z = -2.45E-3F;String ch = "essai";// affichageSystem.out.println(" x = : " +x +" et z = : " +z);System.out.println("\n c = : " +c +" et ch = : " + ch );
}}
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
64
Entrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode 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éedé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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
65
Entrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texte
Exemples de saisieimport 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);
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
66
Entrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode 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èreSystem.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
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
67
Entrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texte
Exemple avec gestion des exceptionsimport 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());
}
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
68
Entrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texte
Exemple avec gestion des exceptions (suite)// exception éventuellement générée par readLinecatch (IOException e){
System.out.println("ERREUR DE SAISIE \n\n");}
// exception éventuellement générée par parseIntcatch (NumberFormatException e){
System.out.println("ERREUR DE TYPE \n\n");}
System.out.println("l'entier vaut : "+ x);
} // public static void main
} // class TestSaisie
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
69
ApplicationApplicationApplicationApplication
Définition d'un tableau de taille dynamiqueavec remplissage aléatoireimport 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());
~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique
UUCCLLBB
70
ApplicationApplicationApplicationApplication
Définition d'un tableau de taille dynamiqueavec 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