Vous êtes sur la page 1sur 11

JAV notions A

http://www.pasteur.fr/~llafit..

JAVA NOTIONS

1.

commentaire
// ligne de commentaire x += 5 ; // commentaire x += /* commentaire */ 5; /** commentaire de documentation (utilise par JavaDoc) */

2.

constante
entier : Dcimal 132 -132 ou 132L pour un long mais pas 0132 (ne pas commencer par un zro) Hexadcimal 0XE3A4 0x3D6 Octal 0132 rel : 1.32 1.32e4 1.32E4 sont des "double", 1.32F 1.32f des "float" boolen : true false caractre (Unicode): 'A' '\n' newline '\t' tabulation ... '\0132' '\0xA2' chane de caractres : "chaine" "une ligne\ndeux !" null : valeur d'une variable qui ne rfrence aucun objet.

3.

identificateur
nom qui rfrence/nomme une classe, une interface, une mthode, une variable, un package commence par une lettre ou $ ou _, puis est suivi de lettres ou chiffres ou caractres nationaux (accentus) Java distingue la casse majuscule/minuscule. convention : nom de classe ou interface : ChienDeRace mthode ou variable : toutouBatard constante (variable final) : MEDOR_QUI_MORD 4.

type
type de base : pour les valeurs et variables non objets entier : byte (8 bits) short (16) int (32) long (64) rel flottant : float (32) double (64) char (16 bits Unicode) boolean type rfrence : type pour rfrencer les objets chaque classe correspond un type rfrence de mme nom les types tableaux sont des types rfrences 5.

dclaration de variable
dclaration : int i ; int i,j ; int i = 2, j = 3; <type> <identificateur> [= <valeur d'initialisation>] ; visibilit d'une variable dans le bloc {} o elle est dfinie

1 sur 11

06/10/2011 16:5

JAV notions A
3 sortes de variables : variable de classe = attribut de la classe (1 seule pour toute la classe) variable d'instance = attribut d'une instance de la classe (1 par instance/objet) variable locale = dclare dans une mthode initialisation: une variable locale DOIT tre initialise obligatoirement ! les variables de classe et d'instance non initialises recoivent la valeur 0 pour un entier ou un rel, null pour une chaine, false pour un boolean. 6.

http://www.pasteur.fr/~llafit..

expression, instruction : comme en C


mmes oprateurs sauf : . signifie oprateur d'accs aux attributs ou mthodes d'un objet ou d'une classe : Chien.nom + est aussi la concatenation de String : "abc" + "def" instanceof teste l'appartenance d'un objet une classe (ou si un objet implmente une interface) et retourne un boolean : milou instanceof Chien prcdence des oprateurs : les oprateurs les + prioritaires l'valuation sont vers le haut du tableau . [] () ++ -- ! ~ instanceof * / % + << >> >>> < > <= => == != & ^ && || ?: = op=
! valuation de droite gauche !

, Lorsque l'on effectue des oprations sur des variables de types diffrents, le type du rsultat est celui de l'oprande occupant le plus de place en mmoire : int est converti vers long ou double sans problme, ou vers float (avec perte de prision possible) float vers double long vers double sans problme, ou vers float (avec perte de prision possible) les dclarations de variable locale peuvent se faire n'importe o dans un bloc { } cast (transtypage) , convertion de type comme en C : float f = 3.56F ; int i = (int) f ; instructions comme en C : if else, for, while, do while, switch, break, continue, return attention aux tests qui doivent tre de type boolean

2 sur 11

06/10/2011 16:5

JAV notions A
7.

http://www.pasteur.fr/~llafit..

tableau
un tableau est une objet qui contient une collection d'lments de mme type qui sont accessible par un ou plusieurs index entiers (commencant partir de la valeur 0) dclaration : char tab [] ; char [] tab ; int [][] mat ; int mat [][]; <type> [] <identificateur> ; <type> <identificateur> [] ; instanciation (cration) : tab = new char [7]; mat = new int [5] [6] ; float tab2 [] = new float [7] ; boolean grille [] [] = { { false, true, false}, {true, false, false}}; <nom> = new <type> [<taille>]; instanciation <type> <nom> [] = new <type> [<taille>]; dclaration/instanciation <type> <nom> [] = { <liste des lments du tableau }; dclaration/instanciation/initialisation accs aux lments comme en C l'accs en dehors des indices valides provoque une exception IndexOutOfBoundException longueur du tableau : tab.length 1ere dimension : mat.length, seconde mat[0].length un tableau est une variable d'instance, exemple mat. comme tout objet java, elle hrite des mthodes et attributs de la classe Object. mat instanceof int[][] est true la classe de mat2 est int[][]

8.

dclaration de classe
classe = modle/type pour des objets, qui prcise les attributs (tats de l'objet) et mthodes (comportements) public class Chien { public String couleur; public void aboie () { System.out.println("Houah! Houah!"); } }; [<modificateurs d'accs>] class <nomClasse> [<extends> <SuperClasse>] [implements <interfaces>] { <attributs> <mthodes> } modificateurs d'accs = visibilit, .... extends prcise que la dclaration de la prsente classe hrite d'une autre (super)classe implements prcise que la dclaration de la prsente classe implmente certaines interfaces (il s'agit d'une forme d'hritage multiple) les attributs sont les champs/caractristiques, sur l'exemple : couleur les mthodes sont les messages/fonctions/actions applicables, sur l'exemple : aboie 9.

package, import
import java.io.* ; System.out.printl("valeur de pi = " + java.lang.Math.PI); La librairie standard de Java est organise en arborescence de package, qui sont des sous-ensembles fonctionnels de classes et d'interfaces. L'accs un package ou une Classe d'un package se fait en

3 sur 11

06/10/2011 16:5

JAV notions A
donnant le chemin dans cette arborescence, chaque nom de package (sous-package) tant spar par un point. l'instruction import permet "d'importer" un ou plusieurs packages : les classes importes peuvent tre alors nommes sans leur "chemin". L'toile dans un import ne dsigne que tous les sous-packages directement en dessous du package nomm : java.awt.* ne dsigne pas java.awt.color.* il est possible de dclarer un package en ajoutant tous les fichiers sources concerns le 1re ligne : package <nomDePackage>; 10.

http://www.pasteur.fr/~llafit..

objet
Cration d'un objet : new Chien milou ; milou = new Chien() ; Chien mdor = new Chien() ; [<nomClasse>] <variable> = new <nomClasse> (<paramtres>) ; l'oprateur new cre une instance d'une classe en faisant appel une mthode constructeur s'il y a, et renvoie une rfrence sur l'objet instanci instanciation = crer un objet partir d'une classe objet = instance de classe qui possde une "copie" des attributs et mthodes de la classe accs aux variables et mthodes d'un objet : milou.couleur = "blanc" ; mdor.couleur = milou.couleur ; mdor.aboie(); <nomObjet>.<variable> pour accder un attribut sous rserve de visibilit et des modificateurs <nomObjet>.<mthode>([<paramtres effectifs>]) pour envoyer un message cet objet ou encore appeler/excuter une mthode sur l'objet dsign : dans l'exemple, le message aboie est envoy mdor, ce qui provoque l'excution de la mthode nomm; le mode passage des paramtres est par valeur pour les types simples et par rfrence pour les tableaux, chaines de caractres et objets. destruction d'un objet : automatique ds que l'objet n'est plus rfrenc par aucune variable ou aucun autre objet. la mthode finalise() est appele avant la destruction de l'objet : elle peut tre redfinie.

11.

attribut
variable d'instance : dfinit l'attribut d'une seule instance d'une classe : donc un attribut attach chaque objet de la classe par exemple couleur de la classe Chien [<modificateurs>] <type> <nomVariable> [= <valeur>] ; o modificateur peut tre final, public, private, protected, private protected, volatile, transcient variable de classe : dfinit l'attribut de la classe : donc un attribut attach la classe qu'elle possde 1 ou plusieures instances ou aucune, public class BergerAllemand {

4 sur 11

06/10/2011 16:5

JAV notions A
static public String couleur = "marron" ; public String nom ; public void aboie () { System.out.println("Houah! Houah!"); } }; static [<modificateurs>] <type> <nomVariable> [= <valeur>] ; o modificateur peut tre final, public, private, protected, private protected, volatile, transcient 12.

http://www.pasteur.fr/~llafit..

mthodes
mthode d'instance : dfinit un comportement de l'objet, un traitement qui ne peut tre dclanch qu'en envoyant un message un objet de la classe par exemple aboie de la classe Chien [<modificateur>] <type> <nomMthode> ([<paramtres formels>]) { <corps de la mthode> } mthode de classe : public class Chien { public String couleur; public static int nombreDePattes () { return 4; } } dfinit un comportement de la classe, un traitement qui peut tre dclanch sans instance de la classe la classe elle-mme : System.out.println("nombre de pattes d'un chien : " + Chien.nombreDePattes() ); [<modificateur>] static <type> <nomMthode> ([<paramtres formels>]) { <corps de la mthode> } ne peut affecter que des variables de classe (donc static) gnralits : une mthode dfinit un comportement comme une procdure ou une fonction le type de la valeur renvoy peut-tre void, un type simple ou une rfrence d'objet. Sauf pour void, la valeur est renvoy par une instruction return <valeur> ; dans le corps de la mthode le mode passage des paramtres est par valeur pour les types simples et par rfrence pour les objets, donc tableaux et chaines de caractres. signature et surcharge : public class Chien { public void aboie () { System.out.println("Houah! Houah!"); } public void aboie (int nbre) { for (int i = 0 ; i < nbre ; i++ ) System.out.println("Houah!"); } public void aboie (String aboiement) { System.out.println(aboiement + " " + aboiement); } }; les accs sont alors : milou.aboie(); mdor.aboie("Grrrr"); milou.aboie(5); la signature d'une mthode est constitue du nom de la mthode, du nombre et du type de ses paramtres, et du type qu'elle renvoie. la surcharge d'une mthode dans une classe consiste dfinir des mthodes de mme nom mais de signature diffrente au niveau des paramtres.La surcharge est

5 sur 11

06/10/2011 16:5

JAV notions A
une forme de polymorphisme. 13.

http://www.pasteur.fr/~llafit..

constructeurs
une mthode constructeur est une mthode appele au moment de la cration d'une instance par l'oprateur new. public class Chien { public String couleur; public Chien () { couleur = "inconnue"; } public Chien (String c) { couleur = c; } } Chien mdor = new Chien() ; Chien milou; milou = new Chien("blanc"); [<modificateur>] <nomClasse> ([<paramtres formels>]) { <corps de la mthode constructeur> } o les modificateurs peuvent tre public, private, protected, ou sans. gnralits : Un constructeur ne retourne pas de valeur Un constructeur ne peut pas tre appel sauf par l'oprateur new. Un constructeur peut tre surcharg ou redfini. le constructeur par dfaut est : soit implicite, c'est dire non dfini : il initialise alors les attributs soit explicite, c'est dire dfini : il doit alors tre sans paramtre

14.

application, applet
la compilation d'un fichier source (nomm TelleClasse.java) contenant la classe TelleClasse produit un fichier (excutable en bytecode) de nom TelleClasse.class. La commande est : javac TelleClasse.java application Java : c'est un programme autonome qui excute un ou plusieurs fichier .class, et dont un (celui qui est lanc en premier) doit possder une mthode : public static void main (String args []) { <corps du "programme principal"> } la ligne de commande d'xcution est : java ClasseContenantMain argument0 argument1 .... Les arguments, s'il y en a, sont des String et sont indexs partir de 0. applet Java : ne peut tre excuter que par un navigateur Web compatible Java, ou la commande appletviewer du JDK. import java.awt.*; public class MonApplet extends java.applet.Applet { public void paint( Graphics g) { g.drawString("Hello Word !", 10, 20); } } Une applet doit tre compose d'au moins une sous-classe de Applet et ventuellement d'autres classes auxilliaires. Pour charger une applet dans une page HTML : <applet code="nomApplet.class" codebase="chemin d'accs commencant par http://" width=valeur

6 sur 11

06/10/2011 16:5

JAV notions A
height=valeur> attention ! navigateur sans java </applet> Elle ne possde pas de mthode main() mais d'une ou plusieures mthodes parmi les mthodes init() start() stop() destroy() paint() hrites de la super-classe Applet : init() est lance par le Navigateur ds que le chargement de l'applet est termin, start() est lance aprs init() et chaque re-chargement de la page html, paint() est lance chaque fois que l'applet est rendue visible; cette mthode peut rcuprer le paramtre Graphics utile pour dessiner, stop() est lance quand la navigateur change de page ou quand l'applet se termine ou avant destroy() destroy() est lance la fermeture du navigateur. la classe Applet hrite de la classe Panel, composant graphique. 15.

http://www.pasteur.fr/~llafit..

hritage, sous-classe, super-classe


public class Chien { public String couleur; public String nom ; public Chien () { couleur = nom = "inconnu"; } public void aboie () { System.out.println("Houah! Houah!"); } public void aboie (int nbre) { for (int i = 0 ; i < nbre ; i++ ) System.out.println("Houah!"); } } public class ChienDeRace extends Chien { public String race; public ChienDeRace (String r) { race = r; } public void aboie () { System.out.println("Wouf! Wouf!"); } // c'est plus distingu un chien de race ! } la classe ChienDeRace hrite de la classe Chien : la classe Chien est la super-classe de la classe ChienDeRace, et la classe ChienDeRace est une sous-classe de la classe Chien, ce qui constitue une hirarchie. Une classe n'hrite que d'une super-classe : c'est l'hritage simple. la sous-classe hrite de tous les attributs et mthodes de sa super_classe. redfinition de mthode : A l'appel d'une mthode, celle-ci est d'abord recherche dans la classe de l'objet; si elle n'y est pas dfinie, elle est recherche dans sa super-classe, et ainsi de suite dans la hirarchie de classe. une mthode hrite d'une super-classe peut-tre redfinie dans une sous-classe. Cette redfinition masque la mthode hrite. C'est une forme de polymorphisme. au niveau de la sous-classe, l'accs aux mthodes et attributs ainsi que la redfinition de mthode (ou constructeur) dpends des modificateurs d'accs de

7 sur 11

06/10/2011 16:5

JAV notions A
ses attributs et mthodes dans la super-classe. si un constructeur est dfinit dans une sous-classe : si il n'appelle pas explicitement le constructeur this() ou super (), alors un appel super() est effectu, Si le constructeur appelle this() ou super(), ce doit tre sa 1re instruction. SIMPLIFIONS : un constructeur par dfaut explicite doit exister dans la super-classe. 16. final variable locale final = constante attribut/variable d'instance final = constante mthode d'instance final = mthode non surchargeable et non redfinissable classe final = ne peut avoir de sous-classe static attribut static = variable de classe = existe en un seul exemplaire quelque soit le nombre d'instanciation (ou sans instanciation) mthode static = mthode de classe = mthode "sans envoi de message" applique la classe et non un objet. code static = static { instructions } initialise les variables static d'une classe public public = la variable ou la mthode (ou le constructeur) ou la classe est accessible partout variable d'instance : rarement public sauf si final. private les variables ou les mthodes (ou constructeurs) ne sont accessibles que par les membres internes de la classe protected protected = les variables ou les mthodes (ou constructeurs) ne sont accessibles que par les membres internes de la classe, de ses sous-classes et des classes du mme package. classe protected = accessible que par ses sous-classes et des classes du mme package. private protected les variables ou les mthodes ne sont accessibles que par les membres internes de la classe, de ses sous-classes. pas de modificateur d'acces : acces package = les variables ou les mthodes (ou constructeurs) ou classes ne sont accessibles que par les membres internes de la classe, et des classes du mme package. abstract : une mthode abstraite ne contient pas de corps, mais doit tre implmente dans les sous-classes, une classe est abstraite si elle contient au moins une mthode abstraite ; elle ne peut pas tre instancie, mais ses sous-classes non abstraites le peuvent. une interface est par dfaut abstraite. autre modificateurs : native : mthode crite en C dans un fichier externe

http://www.pasteur.fr/~llafit..

modificateur d'accs

8 sur 11

06/10/2011 16:5

JAV notions A
synchronized : variable accs en exclusion mutuelle pour les threads transcient volatile 17.

http://www.pasteur.fr/~llafit..

this, super
deux autres constructeurs pour la classe Chien : public Chien (String n) { couleur = "inconnu"; nom = n ;} public Chien (String n, String c) { this(n) ; couleur = c; } une autre mthode et deux autres constructeurs pour la classe ChienDeRace : public void compte (int nbre) { if (nbre == 2) this.aboie(); else super.aboie(nbre); } // un chien de race sait compter ! public ChienDeRace (String n, String c, String r) { super(n, c); race = r; } public ChienDeRace (String n, String r) { race = r; super.nom = n; } this fait rfrence l'objet en cours, super fait rfrence la super-classe de l'objet en cours et sont utilisable : suivi d'un point pour accder une mthode ou un attribut de l'instance, en passage de paramtre une mthode, en valeur de retour. this(<paramtres>) appelle une mthode constructeur, et ne peut tre utilise qu'en premire instruction dans un corps de constructeur. super(<paramtres>) appelle une mthode constructeur dclare par la super-classe de l'objet en cours, et ne peut tre utilise qu'en premire instruction dans un corps de constructeur.

18.

hritage multiple, interface


public interface AnimalSavant { public void compte(int nbre) ; } public class Chien implements AnimalSavant { public String couleur; public Chien () { couleur = "inconnu"; } public void aboie () { System.out.println("Houah!"); } public void compte (int nbre) { for (int i = 0 ; i < nbre ; i++ ) this.aboie(); } } // dans la classe Grenouille, l"implmentation de l'interface AnimalSavant est diffrente ! une interface est une "classe abstraite" ne comportant que des constantes et des mthodes abstraites. Une classe peut implmenter une ou plusieures interfaces, c'est dire dfinir le corps de toutes les mthodes abstraites. C'est l'hritage multiple de Java. [<modificateurs d'accs>] interface <nomInterface> [implements <interfaces>] { <constantes> <mthodes abstraites> } les modificateurs d'accs de l'interface peuvent tre public ou (sans) package ; les constantes sont explicitement ou implicitement static et final : [<modificateurs>] <type> <nomVariable> = <valeur>; [<modificateurs>] static final <type> <nomVariable>

9 sur 11

06/10/2011 16:5

JAV notions A
= <valeur> ; les mthodes sont explicitement ou implicitement abstraites : [<modificateur>] <type> <nomMthode> ([<paramtres formels>]); [<modificateur>] abstract <type> <nomMthode> ([<paramtres formels>]); Une classe qui implmente une interface doit dfinir le corps de toutes ses mthodes abstraites. les sous-classes d'une super-classe qui implmente une interface, hritent (et peuvent redfinir) des mthodes implmentes. Une interface peut hriter (par extends) d'une autre interface et en implmenter (par implements) d'autres. 19.

http://www.pasteur.fr/~llafit..

exception
try { int x=System.in.read(); System.out.println("caractre lu :" + (char)x); } catch (IOException e) {System.out.println(e.getMessage());} public char litUnChar() throws IOException { int x=System.in.read(); return (char)x ;} L'excution de certaines instructions ou mthodes peuvent lever des (erreurs d'excution) exceptions. Celles-i sont organises en classe, par exemple, la classe RuntimeException regroupe les incidents du genre : division par 0 (ArithmeticException), en dehors des bornes d'un tableau (IndexoutOfBoundsException), mthode applique une rfrence nulle (NullPointerException), ... try ... catch, capture d'exception : try { bloc d'instructions pouvant lever des exceptions } catch {type_d_exception e) { traitement de e} // dfinit l'exception capturer et son traitement catch {autre_type_d_exception e) { traitement de e} ds qu'une exception est leve dans le corps de try, le traitement de ce corps est termin et catch dfinit le traitement de l'exception capture. throws, dcaler/propager une exception : [<modificateur>] <type> <nomMthode> ([<paramtres>]) throws <liste d'exceptions> { <corps de la mthode pouvant lever des exceptions > } les exceptions listes sont propages/transmises la mthode appelante si elles sont leves dansle corps de la mthode traite. Donc une exception peut tre propage jusqu' une mthode appelante qui la capture et la traite. Il n'est pas obligatoire de capturer ou propager les exceptions (unchecked) non contrles : les Error et RunTimeException. Mais une exception leve non propage et non capture finit par provoquer l'arrt de la "mthode du programme principal". Les Exceptions de la classe des IOException doivent tre obligatoirement captures ou propages. Il est possible de crer des nouvelles sous-classes d'Exception et de gnrer/lever de telles exceptions par l'instruction throw.

10 sur 11

06/10/2011 16:5

JAV notions A
index

http://www.pasteur.fr/~llafit..

11 sur 11

06/10/2011 16:5

Vous aimerez peut-être aussi