Cours Java3

Embed Size (px)

Citation preview

  • 8/17/2019 Cours Java3

    1/98

     

    Rappels : Quelques principesdeprogrammation Un programme est écrit une fois S’il est utile,

    – il sera modié– corrigé– on lui ajoutera des fonctionnalités

    – des dizaines de fois– peut-tre plusieurs années apr!s sonécriture

  • 8/17/2019 Cours Java3

    2/98

     

    "e qu’il faut rec#erc#er Une plus grande facilité de

    programmation $ais surtout

    – une maintenance plus aisée

    – et une e%tensi&ilité accrue

  • 8/17/2019 Cours Java3

    3/98

     

    "omment ' $odularité : décomposer en éléments plussimples

    (ncapsulation : cac#er ce qu’il n’est pasindispensa&le de )oir *isi&ilité : faciliter la compré#ension desprogrammes

    Réutilisa&ilité : écrire des modulesréutilisa&les dans les futurs dé)eloppements+dicile

  • 8/17/2019 Cours Java3

    4/98

     

    $odularité Un programme est modulaire s’il est découpéen modules +plus ou moins indépendants Un &on découpage doit satisfaire les . crit!res :

    – fort couplage des éléments d’un module– fai&le couplage entre deu% modules di/érents

    "es . principes fa)orisent l0utilisation, laréutilisation et la maintenance des modules :

    – plus de souplesse : un module - unefonctionnalité– les modications d0un module ont le moinsd’impacts possi&le sur les autres modules

  • 8/17/2019 Cours Java3

    5/98

     

    (ncapsulation *’encapsulation est le fait de ne montrer et dene permettre de modier que ce qui estnécessaire 1 une &onne utilisation

    – on montre l’interface +ser)ices o/erts d’unmodule– on cac#e l’implémentation +comment sont rendusles ser)ices

    *es a)antages en sont :

    – simplication de l’utilisation +la comple%itéd’utilisation ne dépend que de l’interface pu&lique– meilleure ro&ustesse du programme– simplication de la maintenance de l’application

  • 8/17/2019 Cours Java3

    6/98

     

    2ers une programmation

    par composants Sur le mod!le des circuits électroniques :

    – c#aque composant remplit des fonctionnalités&ien

    déterminées et o/re des possi&ilités de conne%iona)ec d0autres composants– pas &esoin d0aller lire le code pour les utiliser +onne sait rien de l0implémentation

    (n mieu%3– on peut congurer le composant– et sau)egarder cette conguration, ou unassem&lage de composants, pour la réutiliser

  • 8/17/2019 Cours Java3

    7/98 

    Structure lexicale du

    langage Java4our les identicateurs, les commentaires, les

    )aleurs de t5pe caract!re ou c#a6ne decaract!res, 7a)a utilise les caract!res du code

    Unicode

    *e reste d’un programme 7a)a est formé decaract!res 8S"99 +qui sont les .; premierscaract!res du code Unicode

  • 8/17/2019 Cours Java3

    8/98 

    9denticateurs Un identicateur 7a)a

    – est de longueur quelconque

    – commence par une lettre Unicode+caract!res8S"99 recommandés

    – peut ensuite contenir des lettres ou des

    c#i/res ou le caract!re souligné = > ?– ne doit pas tre un mot-clé ou les constantestrue, false ou null

  • 8/17/2019 Cours Java3

    9/98 

    $ots-clés 7a)aa&stract, &oolean, &rea@, &5te, case, catc#, c#ar,class, const, continue, default, do, dou&le,

    enumAA, else, e%tends, nal, nall5, Boat, for,goto, if, implements, import, instanceof, int,interface, long, nati)e, neC, null, pac@age,pri)ate, protected, pu&lic, return, s#ort, static,

    strictfp, super, sCitc#, s5nc#ronized, t#is, t#roC,t#roCs, transient, tr5, )oid, )olatile, C#ile

    AA : depuis 7

  • 8/17/2019 Cours Java3

    10/98 

    "ommentaires// Voici un commentaireint prime = 1500; // prime n de moisH Sur plusieurs lignes :/* remi!re ligne du commentairesuite du commentaire */H

  • 8/17/2019 Cours Java3

    11/98 

    Ipérateurs 2oici les plus utilisés := ' ( * / ) '' (( '= (= *= /= ''

    (( = = = + , += ,=

    -- .. +et, ou, négation

    "réation d’une instance: ne

  • 8/17/2019 Cours Java3

    12/98 

    (%emples d’utilisation

    des opérateurs int x = 2 = 3; int 4 = x/2; // division enti!re 4 = 67 4 = x'' / 2; // 4 = 6 puis x = 10 4 = ''x / 2; // x = 11 puis 4 = 5 if 4 == 27 // et pas un seul 8=8

    x '= 2; // raccourci if 2 = 0 -- x/2 + 97

  • 8/17/2019 Cours Java3

    13/98 

    Ipérateur instanceof  *a s5nta%e est :objet instanceof nomClasse (%emple : if x instanceof :ivre7 *e résultat est un &ooléen :

    – true si l’o&jet est du t5pe de la classe– false sinon

    In )erra des compléments surinstanceof dans le cours sur l’#éritage

  • 8/17/2019 Cours Java3

    14/98 

    Irdre de priorité des

    opérateurs

  • 8/17/2019 Cours Java3

    15/98 

    Utilisation des opérateurs

    sur les &itsnal 2te 3 = 3; // = 0000 00102te drapeaux = 5; // its 1 et ? positionn#s

    // 3!me it @ 1 sans touc$er aux autres its7 Adrapeaux .= 3; // . = ou logiBue// 3!me it @ 0 sans touc$er aux autres its7 Adrapeaux -= C3; // C = inverse les its ; - = et

    logiBue// nverse la valeur du 3!me it sans touc$er aux

    // autres its7 Adrapeaux D= 3; // D = xor 1 ssi un seul des 3 @ 17// >este la valeur du 3!me it Aif drapeaux == drapeaux . 377S2stem%out%println8

  • 8/17/2019 Cours Java3

    16/98 

  • 8/17/2019 Cours Java3

    17/98 

    (%emples de décalages de

    &its4lus rapide que n / 3 : n ++ 1 H 1? ,, 3 : E. H (1? ,, 3 K -E. H 1? ++ 3 K L H(1? ++ 3 K -M +c’est &ien -L N M car -M est &ien

    leplus grand entier tel que -M % M O -L H 1? +++ 3 K L H (1? +++ 3 K GPLPM;.G +pas d’e%tension designe

  • 8/17/2019 Cours Java3

    18/98 

    >2pes de donn#es en

     Java 5pes primitifs 5pes o&jets "asts a&leau%

  • 8/17/2019 Cours Java3

    19/98 

     5pes de données en 7a)a outes les données manipulées par 7a)a ne sont pas des o&jets

    . grands groupes de t5pes dedonnées :– t5pes primitifs– o&jets +instances de classe

  • 8/17/2019 Cours Java3

    20/98 

     5pes primitifs oolean +trueNfalse om&res entiers : 2te + octet, s$ort +.

    octets, int +M octets, long +; octets om&res non entiers, 1 )irgule Bottante :Eoat +M octets, doule +; octets

    "aract!re : c$ar +. octets J codé parle codage Unicode +et pas 8S"99

  • 8/17/2019 Cours Java3

    21/98

     

    "aractéristiques des

    t5pes numériques entiers 2te : compris entre –.; et .P s$ort : compris entre –L.FP; et

    L.FPP int : compris entre –.FMPFM;LFM; et.FMPFM;LFMP long : )aleur a&solue ma%imum

    +arrondie T,. % G;

  • 8/17/2019 Cours Java3

    22/98

     

    "aractéristiques dest5pes numériques nonentiers Eoat : en)iron P c#i/res signicatifs J )aleura&solue +arrondie inférieure 1 L,M % GL; et

    précision ma%imum +arrondie de ,M % G-ME

    doule : en)iron P c#i/res signicatifs J)aleur a&solue +arrondie inférieure 1 ,; %GLG; et précision ma%imum +arrondie de M,T %

    G-L.M

  • 8/17/2019 Cours Java3

    23/98

     

    (rreurs de calculs *es t5pes numériques = Bottants ? +non

    entiers respectent la norme 9((( PEM

    $algré toutes les précautions prises, onne peut empc#er les erreurs de calculs :  F; .GF donne LFTGGGGGGGGGGGGG 4our les traitements de compta&ilité onutilisera la classe Fava%mat$%

  • 8/17/2019 Cours Java3

    24/98

     

    "onstantes nom&res Une constante = enti!re ? est de t5pe long sielle est su%ée par = * ? et de t5pe int sinon Une constante = Bottante ? est de t5pe Eoat si

    elle est su%ée par = V ? et de t5pe doule

    (%emples: ?5 359: // constante de t2pe long 6%5HIe3 // 65HI de t2pe doule %13?59I&(35 // de t2pe Eoat 013 // 13 en octal = 10 en d#cimal 0xKI // KI en $exa = 1HI en d#cimal

  • 8/17/2019 Cours Java3

    25/98

     

    "onstantes de t5pecaract!re

    Un caract!re Unicode entouré par= ’ ?

    "R et *V interdits +caract!res de nde ligne LKL

    L\tL L\nL L\rL L\\L L\LL L\8L L\u0?aL +\u sui)i du code

    #e%adécimal d’un caract!reUnicode

  • 8/17/2019 Cours Java3

    26/98

     

    8utres constantes

     5pe &ooléen– false

    – true Référence ine%istante +indique

    qu’une )aria&le de t5pe non primitifne référence rien J con)ient pourtous les types non primitifs

    – null

  • 8/17/2019 Cours Java3

    27/98

     

    2aleurs par défaut Si elles ne sont pas initialisées, les )aria&lesd’instance ou de classe +pas les )aria&les

    localesd’une mét#ode reWoi)ent par défaut les)aleurs sui)antes :

    oolean false c$ar L\u0000L (ntier +2te s$ort int long 0 0: Vlottant +Eoat doule 0%0 0%0G

    Référence d’o&jet null

  • 8/17/2019 Cours Java3

    28/98

     

     raitement di/érent pourles o&jets et les t5pesprimitifs 7a)a manipule di/éremment les

    t5pes primitifs et les o&jets *es )aria&les contiennent

    – des )aleurs de t5pes primitifs– des références au% o&jets

  • 8/17/2019 Cours Java3

    29/98

     

    *a pile et le tas *’espace mémoire alloué 1 une )aria&le localeest situé dans la pile Si la )aria&le est d’un t5pe primitif, sa )aleur estplacée dans la pile Sinon la )aria&le contient une référence 1 uno&jet J la )aleur de la référence est placée dans lapile mais l’o&jet référencé est placé dans le tas *orsque l’o&jet n’est plus référencé, un= ramasse-miettes ? +garbage collector , X"li&!re la mémoire qui lui a été allouée

  • 8/17/2019 Cours Java3

    30/98

     

    (%emple d’utilisation desréférences int m7 M K a1 a3;

    a1 = ne K7; a3 = a1; %%% N

     Que se passe-t-il lorsque la mét#ode m7est

    appelée '

  • 8/17/2019 Cours Java3

    31/98

     

    int m7 M

    K a1 = ne K7;K a3 = a1;

    Références

    4ile  as

    a

    a.

  • 8/17/2019 Cours Java3

    32/98

     

    int m7 M

    K a1 = ne K7;K a3 = a1;

    Références

    4ile  as

    a

    a.

    9nstance de 8

  • 8/17/2019 Cours Java3

    33/98

     

    int m7 M

    K a1 = ne K7;K a3 = a1;

    Références

    4ile  as

    a

    a.

    9nstance de 8

  • 8/17/2019 Cours Java3

    34/98

     

    int m7 M

    K a1 = ne K7;K a3 = a1;

    Références

    4ile  as

    a

    a.

    9nstance de 8

  • 8/17/2019 Cours Java3

    35/98

     

    int m7 M

    K a1 = ne K7;K a3 = a1;

    8pr!s l’e%écution de la mét#ode m+,l’instance de K n’est plus référencée mreste dans le tas

    4ile  as

    9nstance de 8

  • 8/17/2019 Cours Java3

    36/98

  • 8/17/2019 Cours Java3

    37/98

     

    Ramasse-miettes

    *e ramasse-miettes +garbage collector  est unetYc#e qui

    – tra)aille en arri!re-plan– li&!re la place occupée par les instances nonréférencées– compacte la mémoire occupée

    9l inter)ient– quand le s5st!me a &esoin de mémoire– ou, de temps en temps, a)ec une priorité fai&le

  • 8/17/2019 Cours Java3

    38/98

     

    $odicateur nal

    *e modicateur nal indique que

    la )aleur de la )aria&le ne peuttre modiée : on

    pourra lui donner une )aleur une

    seule fois dans le programme

  • 8/17/2019 Cours Java3

    39/98

     

    2aria&le de classe nal Une )aria&le de classe static nal estconstante dans tout le programme J e%emple :

    static nal doule = ?%16; Une )aria&le de classe static nal peutne pas tre initialisée 1 sa déclaration maiselle doit alors rece)oir sa )aleur dans un &locd0initialisation static

  • 8/17/2019 Cours Java3

    40/98

     

    2aria&le d’instance nal Une )aria&le d’instance +pas static nalest constante pour c#aque instance J mais elle

    peut a)oir . )aleurs di/érentes pour .instances Une )aria&le d0instance nal peut ne pastre initialisée 1 sa déclaration mais elle doit

    a)oir une )aleur 1 la sortie de tous lesconstructeurs

  • 8/17/2019 Cours Java3

    41/98

     

    2aria&le nalSi la )aria&le est d’un t5pe primitif, sa )aleurne peut c#angerSi la )aria&le référence un o&jet, elle ne pourraréférencer un autre o&jet mais l’état de l’o&jetpourra tre modiénal &mplo2e e = ne &mplo2e8oto8; // Kutoris#

    e%setSalaire130007; // Kutoris#

    e = ne &mplo2e8

  • 8/17/2019 Cours Java3

    42/98

     

    Vorcer un t5pe en 7a)a  7a)a est un langage fortement t5pé

  • 8/17/2019 Cours Java3

    43/98

     

    Casts autorisés

    (n 7a)a, . seuls cas sont autoriséspour les casts :

    – entre t5pes primitifs,– entre classes m!reNanctre et

    classes lles +on )erra ce cas lors

    du cours sur l’#éritage

  • 8/17/2019 Cours Java3

    44/98

     

    Casts entre t5pes primitifs Un cast entre t5pes primitifs peut

    occasionner

    une perte de données :con)ersion d0un int )ers un s$ort Un cast peut pro)oquer une simple perte de

    précision :

    la con)ersion d0un long )ers un Eoat peutfaire perdre des c#i/res signicatifs mais pasl0ordre de grandeur

  • 8/17/2019 Cours Java3

    45/98

     

    Une a/ectation entre t5pes primitifs peututiliser un cast implicite si elle ne pro)oque

    aucune perte

  • 8/17/2019 Cours Java3

    46/98

     

    Exemples de Casts

    s$ort s = 1000000; // erreur "as particulier d’une a/ectation statique+repéra&le par le compilateur d’un int = petit ? :

    s$ort s = H5; // pas dLerreur 4our une a/ectation non statique, le cast esto&ligatoire :int i = H0;

    s$ort = s$ort7i ' 57; *es casts de t5pes = Bottants ? )ers les t5pesentiers tronquent les nom&res :int i = int71%; // i = 1 et pas 3

  • 8/17/2019 Cours Java3

    47/98

     

    4ro&l!mes de Casts + Une simple perte de précision ne nécessite pasde cast e%plicite, mais peut conduire 1 desrésultats comportant une erreur importante :

    long l1 = 13?65HI9;long l3 = 13?65HI99;Eoat f1 = l1;Eoat f3 = l3;

    S2stem%out%printlnf17; // 1%3?65HI3&9S2stem%out%printlnf37; // 1%3?65HI96&9S2stem%out%printlnl1 ( l37; // 1S2stem%out%printlnf1 ( f37; // 9

  • 8/17/2019 Cours Java3

    48/98

     

    4ro&l!mes de Casts +.

    8ttention, dans le cas d0un cast e%plicite, latraduction peut donner un résultat totalement

    a&errant sans aucun a)ertissement ni messaged0erreur : int i = 1?0; = 2te7i; // = (13H int c = int71e'?0; // c = 316I69?H6I

  • 8/17/2019 Cours Java3

    49/98

     

    Casts entre entiers etcaract!res 9ls font correspondre un entier et un caract!requi a comme code Unicode la )aleur de l’entier*a correspondance c$ar Z int, long s’o&tientpar cast implicite *e code d’un c$ar peut aller de G 1 EFELEdonc c$ar Z s$ort, 2te nécessite un cast e%plicite +s$ort ne )a que jusqu’1 L.FPP *es entiers sont signés et pas les c$ar donclong, int, s$ort ou 2te Z c$ar nécessite un

    cast e%plicite

  • 8/17/2019 Cours Java3

    50/98

     

    *es ta&leau% sont deso&jets (n 7a)a les ta&leau% sont considérés comme

    deso&jets +dont la classe #érite de PFect :

    – les )aria&les de t5pe ta&leau contiennent desréférences au% ta&leau%– les ta&leau% sont créés par l’opérateur ne– ils ont une )aria&le d’instance +nal :nal int lengt$– ils #éritent des mét#odes d’instance dePFect

  • 8/17/2019 Cours Java3

    51/98

     

    $ais des o&jetsparticuliers

    "ependant, 7a)a a une s5nta%eparticuli!re pour

    – la déclaration des ta&leau%– leur initialisation

    é l i é i d

  • 8/17/2019 Cours Java3

    52/98

     

  • 8/17/2019 Cours Java3

    53/98

     

    9nitialisation des ta&leau% In peut lier la déclaration, la création et

    l’initialisation d’un ta&leau J sa longueur estalors calculée automatiquement d’apr!s le

    nom&re de )aleurs données +attention, cettes5nta%e n0est autorisée que dans ladéclaration :intQR ta&ntiers = M9 3*9 ? 5 N;

    &mplo2eQR emplo2es = Mne &mplo2e8Gupond8 8S2lvie87

    ne &mplo2e8Gurand8 8atric87

    N

  • 8/17/2019 Cours Java3

    54/98

     

    8/ectation en &loc

    In peut a/ecter = en &loc ? tousles éléments d0un ta&leau : intQR t; % % % t = ne intQR M1 3 ?N;

  • 8/17/2019 Cours Java3

    55/98

     

     a&leau% - utilisation 8/ectation des éléments J l’indice

    commence 1 G et se termine 1ta&ntiers%lengt$ ( 1

    ta&ntiersQ0R = 13;  aille du ta&leau

    int l = ta&ntiers%lengt$; // l = 5

    int e = ta&ntiersQ5R; /* :!ve une

    Krra2ndexPutPf

  • 8/17/2019 Cours Java3

    56/98

     

    4aram!tres de la ligne decommande :e%emple de ta&leau dec#a6nes

    class Krguments Mpulic static void mainStringQR args7 Mfor int i=0; i , args%lengt$; i''7

    S2stem%out%printlnargsQiR7;NN

     Fava Krguments toto ii 8c#eratotoii

    8 # l élé t d’

  • 8/17/2019 Cours Java3

    57/98

     

    8c#er les éléments d’unta&leau *a mét#ode toString7 #éritée de PFectsans modication, n’ac#e pas les élémentsdu ta&leau Une simple &oucle, comme dans le transparentprécédent sut 1 les ac#er 4our des &esoins de mise au point il est encoreplus simple d’utiliser les mét#odes static

    toString de la classe Krra2s +depuis 7

  • 8/17/2019 Cours Java3

    58/98

     

    Utilisation d’un ta&leaud’o&jets

    Vaute fréquente : utiliser les o&jetsdu ta&leau a)ant de les a)oir créés

    &mplo2eQR personnel = ne &mplo2eQ100R;personnelQ0R%setTom8Gupond87;

    &mplo2eQR personnel = ne &mplo2eQ100R;

    personnelQ0R = ne &mplo2e7;

    personnelQ0R%setTom8Gupond87;"réation du4remier emplo5

  • 8/17/2019 Cours Java3

    59/98

     

    "omparer . ta&leau%

    In peut comparer l0égalité de . ta&leau% +au senso[ ils contiennent les mmes )aleurs en

    comparant

    les éléments un 1 unIn peut aussi utiliser les mét#odes 1 . argumentsde t5pe ta&leau de la classe Krra2s Fava%util%Krra2s%eBuals7

    par e%emple, Fava%util%Krra2s%eBualsdouleQR a douleQR

    a37

    &l 1 l i

  • 8/17/2019 Cours Java3

    60/98

     

     a&leau% 1 plusieursdimensions

  • 8/17/2019 Cours Java3

    61/98

     

     a&leau% 1 plusieursdimensions

  • 8/17/2019 Cours Java3

    62/98

     

    (%emple

    intQRQR t;t = ne intQ3RQR;intQR t0 = M0 1N;

    tQ0R = t0;tQ1R = ne intQR M3 ? 6 5N;for int i = 0; i , t%lengt$; i''7 M

    for int F = 0; F , tQiR%lengt$; F''7 M

    S2stem%out%printtQiRQFR ' 8; 87;NS2stem%out%println7;

    N

  • 8/17/2019 Cours Java3

    63/98

     

     < L"réer une classe a&leau

  • 8/17/2019 Cours Java3

    64/98

     

    4rogrammation structurée

    *es mét#odes sont structurées en &locs par lesstructures de la programmation structurée– suites de &locs– alternati)es– répétitionsUn &loc est un ensem&le d’instructions délimitépar \ et ]*es &locs peu)ent tre em&o6tés les uns dans les

    autres

  • 8/17/2019 Cours Java3

    65/98

     

    4ortée des identicateurs

    *es &locs dénissent la portée des

    identicateurs *a portée d’un identicateur

    commence 1 l’endroit o[ il est

    déclaré et )a jusqu’1 la n du &locdans lequel il est déni, 5 comprisdans les &locs em&o6tés

  • 8/17/2019 Cours Java3

    66/98

     

  • 8/17/2019 Cours Java3

    67/98

     

    4ortée des identicateurs

    8ttention _ 7a)a n’autorise pas la déclarationd’une )aria&le dans un &loc a)ec le mme nomqu’une )aria&le d’un &loc em&o6tant, ou qu’unparam!tre de la mét#ode

    int sommeint init7 M

    int i = init;

    int F = 0;

    for int i=0; i,10; i''7 M F '= i;

    N

    int init = ?;

  • 8/17/2019 Cours Java3

    68/98

     

    nstructions de contrUle

    8lternati)e = if 3else ?if expression%ooléenne7

    bloc-instructions ou instructionelse

    bloc-instructions ou instruction

    int x = 2 ' 5;if x ) 3 == 07 M

    t2pe = 0;

    x'';Nelse

    t2pe = 1;

  • 8/17/2019 Cours Java3

    69/98

     

    (%pression conditionnelle expression%ooléenne expression& A

    expression'

    int 2 = x ) 3 == 07 x ' 1 A x;

    est équi)alent 1int 2;

    if x ) 3 == 07

    2 = x ' 1else

    2 = x;

  • 8/17/2019 Cours Java3

    70/98

     

  • 8/17/2019 Cours Java3

    71/98

     

    (%emple de sitc$int nVo2elles = 0 nK = 0n> = 0 nKutre = 0;% % %sitc$ lettre7 Mcase WaW A nK'';case WeW A // pas dLinstruction case WiW A nVo2elles'';rea;case WtW A n>'';

    rea;default A nKutre'';N

  • 8/17/2019 Cours Java3

    72/98

     

    $ileexpression%ooléenne7

    bloc-instructions ou instruction

    do

    bloc-instructions ou instruction

    $ileexpression%ooléenne7

    Répétitions = tant que ?

    Répétition for

  • 8/17/2019 Cours Java3

    73/98

     

    Répétition for

    forinit ; test ; incrément 7Minstructions;

    N est équi)alent 1init ;$ile test 7 M

    instructions;incrément N

  • 8/17/2019 Cours Java3

    74/98

    (%emple de for

    int somme = 0;

    for int i=0; i , ta%lengt$; i''7

    Msomme '= taQiR;

    N

    S2stem%out%printlnsomme7;

  • 8/17/2019 Cours Java3

    75/98

    = for eac# ? Une nou)elle s5nta%e introduite par la

    )ersionE du 7

  • 8/17/2019 Cours Java3

    76/98

    4arcours d’un ta&leau

    StringQR noms = ne StringQ50R;

    %%%

    // :ire X pour c$aBue nom dans noms Y// X A Y se lit X dans Y

    for String nom A noms7 M

    S2stem%out%printlnnom7;N 2oir (%emple 4remiere8ppli

    9nstructions liées au%

  • 8/17/2019 Cours Java3

    77/98

    9nstructions liées au%&oucles

    rea sort de la &oucle et continue apr!s la&oucle

    continue passe 1 l’itération sui)anterea et continue peu)ent tre sui)is d’unnom d’étiquette qui désigne une &oucleenglo&ant la &oucle o[ elles se trou)ent +une

    étiquette ne peut se trou)er que de)ant une&oucle

    (%emple de continue et

  • 8/17/2019 Cours Java3

    78/98

    (%emple de continue etrea 

    int somme = 0;

    for int i=0; i , ta%lengt$; i''7 M

    if taQiR == 07 rea;if taQiR , 07 continue;

    somme '= taQiR;

    N

    S2stem%out%printlnsomme7;Qu’ac#e ce code a)ec le ta&leau J –. J E J - J G J ; J -L J G '

  • 8/17/2019 Cours Java3

    79/98

    `tiquette de &oucles

    oucleZ$ileA $ile pasini7 M

    %%%

    for int i=0; i , t%lengt$; i''7 M

    %%%if tQiR , 07

    continue oucleZ$ile;

    %%%

    N%%%

    N

    4assage des arguments

  • 8/17/2019 Cours Java3

    80/98

    4assage des argumentsdes mét#odes *e passage se fait par )aleur +les )aleurs

    desarguments sont recopiées dans l’espace

    mémoire de la mét#ode 8ttention, pour les o&jets, la )aleur passée

    est une référence J donc,– si la mét#ode modie l’o&jet référencé par un

    param!tre, l’o&jet passé en argument sera

    modié en de#ors de la mét#ode– si la mét#ode c#ange la )aleur d’un param!tre

    +t5pe primitif ou référence, Wa n’a pasd’incidence en de#ors de la mét#ode

    (%emple de passage de

  • 8/17/2019 Cours Java3

    81/98

    (%emple de passage deparam!tres pulic static void mint ip &mplo2e e1p &mplo2e e3p7 M

    ip = 100;e1p%salaire = 900;e3p = ne &mplo2e8ierre8 007;

    Npulic static void mainStringQR args7 M&mplo2e e1 = ne &mplo2e8atric8 10007;&mplo2e e3 = ne &mplo2e8

  • 8/17/2019 Cours Java3

    82/98

    main7&mplo2e e1 = ne &mplo2e8atric8 10007;&mplo2e e3 = ne &mplo2e8

  • 8/17/2019 Cours Java3

    83/98

    main7Amie1e37

    4atric@GGG

    ernard

    .GGGe.

    i

    4ile  as

    e

    G

    ip ep

    e.p

    4as de )aria&les locales

    m

    7

  • 8/17/2019 Cours Java3

    84/98

    m7Aip = 100;e1p%salaire = 900;e3p = ne &mplo2e8ierre8 007;

    4atric@GGG

    ernard

    .GGGe.

    i

    4ile  as

    e

    GG

    ip ep

    e.p

    4as de )aria&les locales

    m

    7

  • 8/17/2019 Cours Java3

    85/98

    m7Aip = 100;e1p%salaire = 900;e3p = ne &mplo2e8ierre8 007;

    4atric@;GG

    ernard

    .GGGe.

    i

    4ile  as

    e

    GG

    ip ep

    e.p

    4as de )aria&les locales

    m

    7

  • 8/17/2019 Cours Java3

    86/98

    m7Aip = 100;e1p%salaire = 900;e3p = ne &mplo2e8ierre8 007;

    4atric@;GG

    ernard

    .GGGe.

    i

    4ile  as

    e

    GG

    ip ep

    e.p

    4as de )aria&les locales

    m

    7

  • 8/17/2019 Cours Java3

    87/98

    m7Aip = 100;e1p%salaire = 900;e3p = ne &mplo2e8ierre8 007;

    4atric@;GG

    ernard

    .GGGe.

    i

    4ile  as

    e

    GG

    ip ep

    e.p

    4as de )aria&les locales

    m

    7

  • 8/17/2019 Cours Java3

    88/98

     

    m7Aip = 100;e1p%salaire = 900;e3p = ne &mplo2e8ierre8 007;

    4atric@;GG

    ernard

    .GGGe.

    i

    4ile  as

    e

    GG

    ip ep

    e.p

    4as de )aria&les locales

    m4ierre

  • 8/17/2019 Cours Java3

    89/98

     

    4atric@;GG

    ernard

    .GGGe.

    i

    4ile  as

    e

    4as de )aria&les locales

    m4ierre

    [ain7AS2stem%out%printlni ' W\nW ' e1%salaire' W\nW ' e3%nom7;

  • 8/17/2019 Cours Java3

    90/98

     

    4aram!tre nal

    nal indique que le param!tre nepourra tre modié dans la mét#ode

    Si le param!tre est d’un t5pe primitif, la)aleur du param!tre ne pourra tremodiée : int mnal int x7

    8ttention _ si le param!tre n’est pas

    d’un t5pe primitif, la référence 1 l’o&jetne pourra tre modiée mais l0o&jet lui-mme pourra l0tre : int mnal&mplo2e e17

    *e salaire de l’emplo5ée1 pourra tre modié

    om&re )aria&le

  • 8/17/2019 Cours Java3

    91/98

     

    om&re )aria&led’arguments Quelquefois il peut tre commode d’écrire

    une mét#ode a)ec un nom&re )aria&led’arguments

    *’e%emple t5pique est la mét#ode printf dulangage " qui ac#e des arguments selon

    un

    format d’ac#age donné en premierargument

  • 8/17/2019 Cours Java3

    92/98

     

    S5nta%e pour arguments)aria&les

    8 la suite du t5pe du dernierparam!tre on peut mettre = %%% ? :

    &xemple String%%% PFect%%%

    int%%%

  • 8/17/2019 Cours Java3

    93/98

     

     raduction du compilateur *e compilateur traduit ce t5pe spécial par unt5pe ta&leau ie mint p1 String%%% params7

    est traduit parmint p1 StringQR params7

    *e code de la mét#ode peut utiliser paramscomme si c’était un ta&leau +&oucle for,

    a/ectation, etcF

  • 8/17/2019 Cours Java3

    94/98

     

    (%emplepulic static int maxint%%% valeurs7 M

    if valeurs%lengt$ == 07t$ro ne llegalKrgument&xception8Ku moins 1 valeur reBuise87;

    int max = nteger%[TVK:]&;for int i A valeurs7 Mif i + max7max = i;N

    return max;N 2oir e%emple $a%Fja)a

    Retour de la )aleur d’une

  • 8/17/2019 Cours Java3

    95/98

     

    Retour de la )aleur d unemét#ode return sert 1 sortir d ’une mét#ode enren)o5ant une )aleur +du t5pe déclaré pour let5pe retour dans la dénition de la mét#ode :

    return i * F;return ne "erclep x'27; return sert aussi 1 sortir d’une mét#ode sansren)o5er de )aleur +mét#ode a5ant void comme

    t5pe retour :if x == 07

    return;

  • 8/17/2019 Cours Java3

    96/98

    Que fait le programme sui)ant:pu&lic class *isteoeud \

    i t 9 t l t

    pu&lic )oid inserer+9nteger i \if +est2ide+premier K neC *isteoeud+iJ

  • 8/17/2019 Cours Java3

    97/98

    pri)ate 9nteger elementJpri)ate *isteoeud sui)antJpu&lic *isteoeud+9nteger i,*isteoeud l \element K iJsui)ant K lJ]pu&lic *isteoeud+9nteger i \t#is+i,nullJ]pu&lic *isteoeud getSui)ant+ \return sui)antJ

    ]pu&lic String toString+ \return elementFtoString+J]

    ]pu&lic class *iste \

    pri)ate *isteoeud premierJ

    pu&lic *iste+ \premier K nullJ]pu&lic &oolean est2ide+ \return +premier KK nullJ]

    premier K neC *isteoeud+iJelsepremier K neC *isteoeud+i,premierJ]pu&lic String toString+ \String s K bbJif +est2ide+return b2idebJ*isteoeud p K premierJC#ile +p _K null \s K s b b pFtoString+Jp K pFgetSui)ant+J

    ]return sJ]

    pu&lic static )oid main +String args \*iste l K neC *iste+JlFinserer+neC 9nteger+J

    lFinserer+neC 9nteger+.JlFinserer+neC 9nteger+LJS5stemFoutFprintln+lJ]

    ]

  • 8/17/2019 Cours Java3

    98/98

     < "réer une classe *iste