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