Table Of ContentManualepraticodiJava:
dallateoriaallaprogrammazione
ManualepraticodiJava:
dallateoriaallaprogrammazione
linguaggio,networking,I/O
interfaccegrafiche,
programmazioneconcorrente
ANDREAGINI–PAOLOAIELLO–LORENZOBETTINI–GIOVANNIPULITI
ManualepraticodiJava:dallateoriaallaprogrammazione
AndreaGini–PaoloAiello–LorenzoBettini–GiovanniPuliti
©MokaBytesrl
viaBaracca,132
50127Firenze
http://www.mokabyte.it
e-mail:[email protected]
©2003,TecnicheNuove
viaEritrea,21
20157Milano
http://www.tecnichenuove.com
Redazione:
tel.0239090254–0239090257,fax0239090255
e-mail:[email protected]
Vendite:
tel.0239090251–0239090252,fax0239090373
e-mail:[email protected]
ISBN88-481-1553-5
Immaginedicopertina:graficaHopsLibrisuprogettodiLorenzoPacini
RealizzazioneeditorialeacuradiEscom–Milano
Tuttiidirittisonoriservatianormadileggeeanormadelleconvenzioniinternazionali.
Nomiemarchicitatineltestosonogeneralmentedepositatioregistratidallerispettive
caseproduttrici.
HopsLibrièunmarchioregistratoTecnicheNuovespa
Indice generale
Prefazione.......................................................................................................xv
IntroduzioneaJava.......................................................................................xvii
Lebasidellaprogrammazione.............................................................................xvii
Programmaelinguaggiodiprogrammazione................................................xvii
CompilatoreeVirtualMachine.....................................................................xviii
Ilprimoapproccioconlaprogrammazione........................................................xix
Icostruttidellaprogrammazione.......................................................................xxii
StrutturabasediunprogrammaJava...........................................................xxii
Commenti......................................................................................................xxiii
Istruzioneelementare....................................................................................xxiii
Sequenza.........................................................................................................xxiv
Variabiliintere.................................................................................................xxv
Strutturadicontrollodecisionale:ilcostruttoif-else.................................xxvi
Strutturadicontrolloiterativa:l’istruzionewhile.......................................xxviii
Programmidiesempio........................................................................................xxx
Cosasipuòfareconquesticostrutti?...............................................................xxxii
Capitolo1-Tipididati....................................................................................1
Tipiinteri..................................................................................................................1
Tipinumericifloatingpoint.....................................................................................2
Assegnamentodivariabilifloatingpoint............................................................3
Booleano...................................................................................................................3
Assegnamentosuvariabilibooleane...................................................................4
Caratteri....................................................................................................................5
Promozioniecasting................................................................................................5
Autoincrementoeautodecremento.........................................................................6
viIndicegenerale
Capitolo2-Array..............................................................................................9
Dichiarazionediarray............................................................................................10
Assegnamento.........................................................................................................10
Dereferenziazione..................................................................................................11
Differenzatraassegnamentoedereferenziazione.................................................12
Inizializzazioneautomaticadiunvettore..............................................................14
Lunghezzadiunvettore........................................................................................14
Unesempiodimanipolazionedivettori...............................................................14
Vettorimultidimensionali......................................................................................16
Vettoriincompleti..................................................................................................17
Inizializzazioneautomaticadiunvettoremultidimensionale.........................18
Capitolo3-Strutturedicontrollodecisionali...............................................21
Condizionibooleane..............................................................................................21
Bloccodiistruzionievariabililocali......................................................................22
if–else...............................................................................................................23
if–elseannidati................................................................................................24
if–elseconcatenati...........................................................................................25
Ilcostruttoswitch–case........................................................................................26
Espressionicondizionali........................................................................................27
Capitolo4-Strutturedicontrolloiterative...................................................29
Ciclowhile..............................................................................................................29
Ciclodo–while......................................................................................................30
Ciclofor..................................................................................................................30
Usodelforconparametrimultipli...................................................................31
Ciclinidificati.........................................................................................................33
Usodibreak...........................................................................................................34
L’istruzionecontinue..............................................................................................34
Usodibreakecontinueinciclinidificati..............................................................35
Usodibreakecontinueconlabel.........................................................................35
Capitolo5-Usodeglioggetti.........................................................................37
Lametaforadeglioggetti.......................................................................................37
Lostatodiunoggettoeisuoiattributi............................................................38
Lemodalitàdiutilizzodiunoggetto...............................................................39
Lametaforadeglioggettinellaprogrammazione..................................................39
Creazionediunoggetto....................................................................................40
Ilcomportamentodiunoggettoeisuoimetodi.............................................42
Indicegeneralevii
Gliattributidiunoggettoeilsuostato...........................................................42
Interazionecomplessatraoggetti.....................................................................43
Oggettidisistema...................................................................................................43
Stringhe..................................................................................................................44
LestringheeJava:creazione,concatenazioneeuguaglianza..........................44
Vettoridinamici......................................................................................................49
UsodiVector.....................................................................................................50
MetodifondamentalidiVector........................................................................50
Iterator...............................................................................................................51
Conversioneinarray.........................................................................................52
Unesempioriepilogativo..................................................................................52
Mappehash............................................................................................................53
Metodiprincipali..............................................................................................53
Estrazionedell’insiemedichiaviovalori.........................................................54
Wrapperclass.........................................................................................................54
Capitolo6-LeclassiinJava..........................................................................57
Incapsulamento......................................................................................................58
Dichiarazionedimetodo........................................................................................59
Dichiarazionedimetodoconparametri..........................................................60
Chiamataametodo:ladotnotation......................................................................60
Parametroattualeeparametroformale............................................................62
Passaggiodiparametribyvalueebyref..........................................................63
Visibilitàdellevariabili:variabililocali..................................................................64
Ricorsione...............................................................................................................65
Costruttore.............................................................................................................66
Finalizzatoriegarbagecollection.....................................................................67
Convenzionidinaming..........................................................................................68
Ereditarietà.............................................................................................................68
Overloading............................................................................................................70
Overriding..............................................................................................................72
Identificatorispecialithisesuper..........................................................................72
Bindingdinamico...................................................................................................74
Upcasting,downcastingeoperatoreinstanceof....................................................75
Equalseoperatore==............................................................................................76
Capitolo7-Costruttiavanzati.......................................................................77
Classiastratte..........................................................................................................77
Ilcontestostatico:variabiliemetodidiclasse.................................................79
viiiIndicegenerale
Interfacce................................................................................................................80
Interfacceperdefinireilcomportamento........................................................80
Dichiarazioneeimplementazionediinterfacce...............................................82
Unesempioconcreto........................................................................................83
Tipiepolimorfismo................................................................................................85
Classieinterfacceinterne......................................................................................85
Ipackage.................................................................................................................86
Dichiarazionedipackage..................................................................................86
Compilazioneedesecuzione.............................................................................87
Dichiarazioneimport........................................................................................88
Convenzionidinamingdeipackage.................................................................89
PrincipalipackagedelJDK..............................................................................89
Modificatori............................................................................................................90
Moficatoridiaccesso.........................................................................................90
Final...................................................................................................................91
Native................................................................................................................92
Strictfp...............................................................................................................92
Transient,volatileesynchronized....................................................................92
Capitolo8-Eccezioni.....................................................................................93
Erroriedeccezioni.................................................................................................93
Gestionedelleeccezioni.........................................................................................94
Costruttotry–catch–finally...........................................................................95
Gerarchiadelleeccezioni..................................................................................96
Propagazione:l’istruzionethrows....................................................................97
Lanciodieccezioni:ilcostruttothrow.............................................................98
Catenedieccezioni...........................................................................................99
Eccezionidefinitedall’utente.........................................................................100
Esempioriepilogativo.....................................................................................101
Capitolo9-AssertinJava:tecnicheefilosofiad’uso.................................103
Cosasonoleassert...............................................................................................103
SherlockHolmeselafilosofiadelleAssert....................................................104
Sintassidelleassert..........................................................................................106
Compilazioneedesecuzionedicodiceconassert.........................................106
Abilitazioneedisabilitazioneselettiva............................................................108
Capitolo10-Input/Output..........................................................................109
Introduzione.........................................................................................................109
Indicegeneraleix
Stream...................................................................................................................109
Leclassi................................................................................................................110
LaclasseOutputStream.......................................................................................111
Descrizioneclasse...........................................................................................111
Metodi.............................................................................................................111
LaclasseInputStream..........................................................................................112
Descrizioneclasse...........................................................................................112
Metodi.............................................................................................................112
Glistreampredefiniti...........................................................................................114
Esempi.............................................................................................................114
Streamfiltro..........................................................................................................116
LeclassiFilterOutputStreameFilterInputStream.............................................117
LeclassiDataOutputStreameDataInputStream...............................................117
DescrizioneclasseDataOutputStream...........................................................118
Costruttore......................................................................................................118
Metodi.............................................................................................................118
DescrizioneclasseDataInputStream..............................................................119
Costruttore......................................................................................................119
Metodi.............................................................................................................119
ClassiBufferedOutputStreameBufferedInputStream......................................120
DescrizioneclasseBufferedOutputStream....................................................121
Costruttori.......................................................................................................121
Metodi.............................................................................................................121
DescrizioneclasseBufferedInputStream.......................................................122
Costruttori.......................................................................................................122
Metodi.............................................................................................................122
Streamperl’accessoallamemoria.......................................................................122
DescrizioneclasseByteArrayInputStream.....................................................122
Costruttori.......................................................................................................122
Metodi.............................................................................................................123
DescrizioneclasseByteArrayOutputStream..................................................123
Costruttori.......................................................................................................123
Metodi.............................................................................................................123
DescrizioneclassePipedOutputStream.........................................................124
Costruttori.......................................................................................................125
Metodi.............................................................................................................125
DescrizioneclassePipedInputStream............................................................125
Costruttori.......................................................................................................125
Metodi.............................................................................................................125
xIndicegenerale
Ifile.......................................................................................................................127
DescrizioneclasseFile....................................................................................127
Costruttori.......................................................................................................127
Metodi.............................................................................................................128
DescrizioneclasseRandomAccess.................................................................129
Costruttori.......................................................................................................129
Metodi.............................................................................................................130
LeclassiFileOutputStreameFileInputStream.............................................131
DescrizioneclasseFileOutputStream............................................................131
Costruttori.......................................................................................................131
Metodi.............................................................................................................132
DescrizioneclasseFileInputStream...............................................................132
Costruttori.......................................................................................................132
Metodi.............................................................................................................132
ClassiReadereWriter..........................................................................................133
LeclassiPrintStreamePrintWriter...............................................................134
Altreclassiemetodideprecati.............................................................................134
Capitolo11-Programmazioneconcorrente
egestionedelmultithreadinJava................................................................135
Introduzione.........................................................................................................135
Processiemultitasking.........................................................................................135
Threademultithreading......................................................................................138
IthreadelaJavaVirtualMachine.......................................................................139
LaprogrammazioneconcorrenteinJava............................................................140
Creazioneeterminazionediunthread..........................................................141
L’interfacciaRunnable....................................................................................142
Identificazionedelthread...............................................................................146
Maggiorcontrollosuithread...............................................................................146
Unafinetranquilla:usciredarun()................................................................146
Bisognodiriposo:ilmetodosleep()...............................................................147
Giocodisquadra:ilmetodoyield()...............................................................148
Laleggenonèugualepertutti:lapriorità.....................................................149
El’ultimochiudalaporta:ilmetodojoin()...................................................151
Interruzionediunthread...............................................................................154
Metodideprecati.............................................................................................155
Lasincronizzazionedeithread............................................................................156
Condivisionedidatifrathread.......................................................................156
Competizionefrathread.................................................................................158