Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Introduzione
Organizzazione del libro
Struttura del libro e convenzioni
Codice sorgente e progetti
Compilare ed eseguire direttamente i listati e gli snippet di codice
Compilare ed eseguire con gli IDE i listati e gli snippet di codice
Parte I - Concetti e costrutti fondamentali
Capitolo 1 - Introduzione al linguaggio
Cenni sull’architettura di un elaboratore
Il modello di von Neumann
La CPU
La memoria centrale
Ordinamento dei byte
Paradigmi di programmazione
Concetti introduttivi allo sviluppo in Java
Fasi di sviluppo di un programma in Java
Elementi di un ambiente Java
Il primo programma in Java
Un “assaggio” dei metodi printf, println e print
Elementi strutturali di un programma in Java
Compilazione ed esecuzione del codice
La Java Virtual Machine: un breve dettaglio
Capitolo 2 - Variabili, costanti, letterali e tipi
Variabili
Dichiarazione
Inizializzazione
Costanti
Tipi di dato fondamentali o primitivi
Tipi interi
Letterali interi
Tipi in virgola mobile
Letterali in virgola mobile
Tipi carattere
Letterali carattere
Tipi booleani
Letterali booleani
Categorizzazione completa dei tipi
Wrapper class
Autoboxing e auto-unboxing
Caratteristiche fondamentali dei tipi primitivi
Tipi riferimento
Tipo nullo
Dimensione dei tipi di dato
Conversioni di tipo
Conversioni implicite
Promozioni numeriche
Conversioni esplicite
Variabili locali, “globali” e scope
Categorizzazione delle variabili
Valori di default delle variabili
Capitolo 3 - Array
Array monodimensionali
Dichiarazione
Inizializzazione
Subscripting
Array multidimensionali
Array bidimensionali
Dichiarazione
Inizializzazione
Subscripting
Array tridimensionali
Dichiarazione
Inizializzazione
Subscripting
Costanti di tipo array
Capitolo 4 - Operatori
Operatore di assegnamento semplice
Operatori aritmetici
Operatore di addizione
Operatore di sottrazione
Operatore di moltiplicazione
Operatore di divisione
Operatore modulo
Operatori unari più e meno
Operatori unari di incremento e decremento
Operatore postfisso di incremento e decremento
Operatore prefisso di incremento e decremento
Operatori relazionali
Operatore maggiore di
Operatore maggiore di o uguale a
Operatore minore di
Operatore minore di o uguale a
Operatori di uguaglianza
Operatore uguale a
Operatore non uguale a
Operatori logici
Operatore AND logico condizionale
Operatore OR logico condizionale
Operatore NOT logico
Operatore condizionale
Operatori bit per bit e operatori logici booleani
Operatore di complemento bit per bit
Operatore AND bit per bit
Operatore OR bit per bit inclusivo
Operatore OR bit per bit esclusivo
Operatore di scorrimento a sinistra bit per bit
Operatore di scorrimento a destra bit per bit con segno
Operatore di scorrimento a destra bit per bit senza segno
Comuni casi di utilizzo
Impostazione di singoli bit
Cancellazione di singoli bit
Verifica di un bit
Commutazione di singoli bit
Estrazione di singoli bit
Operatori di assegnamento composti
Tabella di precedenza degli operatori
Capitolo 5 - Istruzioni e strutture di controllo
Istruzioni di selezione
Istruzione di selezione singola if
Istruzione di selezione doppia if/else
Istruzione di selezione multipla switch
Istruzioni di iterazione
Istruzione di iterazione while
Istruzione di iterazione do/while
Istruzione di iterazione for
for “migliorato”
Istruzioni di salto
Istruzione break
Istruzioni etichettate
Istruzione continue
Istruzioni etichettate
Istruzione return
Istruzione throw
Istruzioni ulteriori
Istruzione assert
Istruzione synchronized
Istruzione try
Capitolo 6 - Metodi
Dichiarazione di un metodo
Utilizzo di un metodo
Parametri di un metodo: dettaglio
Argomenti di lunghezza variabile
Conversione, promozione e ordine di valutazione degli argomenti
Parametri di tipo array
Parametri come array monodimensionali
Parametri come array multidimensionali
L’istruzione return: dettaglio
Ricorsione
La funzione main: nozioni conclusive
Elaborare gli argomenti dalla riga di comando
Elaborare il codice di terminazione di un programma
Overloading dei metodi
Parte II - Paradigmi, stili di programmazione e gestione degli errori
Capitolo 7 - Programmazione basata sugli oggetti
Classi
Costruttori di istanza
Finalizzatori di istanza
La keyword this
Visibilità e controllo di accesso
Metodi get e set
Membri statici
Campi statici
Metodi statici
Inizializzatori statici
Membri costanti
Oggetti come elementi di array
Oggetti come membri di una classe
Oggetti come parametri
Classi interne
Classi annidate
Classi locali
Classi anonime
Enumerazioni
Costanti di enumerazione
Il body di un’enumerazione
Esempi pratici
Il tipo Enum<E>
Capitolo 8 - Programmazione orientata agli oggetti
Gerarchie di classi ed ereditarietà
Polimorfismo e binding dinamico
Come definire un sistema polimorfo
Risoluzione del metodo da invocare
L’operatore instanceof
Eccezioni all’ereditarietà
La classe Object
Classi astratte
Interfacce
Ereditarietà multipla con le interfacce
Classi anonime
Capitolo 9 - Programmazione generica
Terminologia essenziale
Metodi generici
Classi generiche
Diamond operator e classi anonime
Metodi statici
Interfacce generiche
Ereditarietà e generici
Vincoli sui parametri di tipo
Covarianza, controvarianza e invarianza
Annotazioni di varianza e wildcard
Covarianza degli array
Tipi raw
Caso 1
Caso 2
Caso 3
Rappresentazione low-level dei generici
Limiti e restrizioni dei generici
I Restrizione: utilizzo degli array
II Restrizione: utilizzo nei contesti static
III Restrizione: utilizzo delle variabili di tipo
IV Restrizione: utilizzo di cast e instanceof
V Restrizione: utilizzo dei tipi primitivi
VI Restrizione: utilizzo con le eccezioni
VII Restrizione: utilizzo dell’overloading
Capitolo 10 - Programmazione funzionale
Concetti propedeutici
Lo stile dichiarativo: un esempio
Immutabilità dello stato: un esempio
First-class values e closure: un esempio
La programmazione funzionale con Java
Estensione delle interfacce
Interfacce funzionali
Metodi di default
Metodi statici
Metodi privati
Ereditarietà e problemi di ambiguità
Lambda expression
Regole di scope rivisitate
Le keyword this e super
Riferimenti a metodi
Riferimenti ai costruttori
this e i riferimenti a metodi
super e i riferimenti a metodi
Target typing
Il package java.util.function
Capitolo 11 - Eccezioni e asserzioni
Eccezioni
Sintassi di base
Rilancio delle eccezioni
Eccezioni controllate e non controllate
Eccezioni a catena
Eccezioni nei costruttori e nei finalizzatori di istanza
La clausola finally
Classi eccezione della libreria standard
Asserzioni
Abilitazione delle asserzioni
Disabilitazione delle asserzioni
Comuni casi di utilizzo
Rappresentazione low-level delle asserzioni
Parte III - Concetti e costrutti supplementari e avanzati
Capitolo 12 - Package
Una panoramica concettuale
Dichiarazione dei package
Package senza nome
Dichiarazioni di importazione
Importazione di tipo singolo
Importazione su richiesta
Importazione statica
Importazione statica su richiesta
Visibilità e disponibilità dei package
L’opzione --class-path (o -cp o -classpath)
La variabile di ambiente CLASSPATH
Archiviazione dei package
Accesso di tipo package
Riepilogo delle modalità di accesso ai tipi e ai membri
Capitolo 13 - Moduli
Senza un sistema a moduli: prima di Java 9
Con un sistema a moduli: a partire da Java 9
Moduli
Dichiarazione
Dipendenza
Esportazione
Apertura
Accessibilità
Descrittori
Packaging
Path
Risoluzione
Osservabilità
�Compatibilità
Servizi
Moduli: un esempio pratico
Interazione tra i moduli: un esempio pratico
Creazione e utilizzo dei servizi: un esempio pratico
Compatibilità e migrazione: un esempio pratico
Immagini di runtime custom: un esempio pratico
Capitolo 14 - Annotazioni
Il tipo annotazione
Membri di un tipo annotazione
Annotazioni
Annotazioni normali
Annotazioni a singolo elemento
Annotazioni marcatore
Applicabilità delle annotazioni
Tipi annotazione predefinite
@Deprecated
@FunctionalInterface
@Inherited
@Override
@Repeatable
@Retention
@SafeVarargs
@SuppressWarnings
@Target
Elaborazione delle annotazioni
Elaborazione a livello di codice sorgente
Elaborazione a livello di file .class
Elaborazione a runtime
Capitolo 15 - Documentazione del codice sorgente
Documentare una classe
Altri tag
Generare la documentazione
Parte IV - Introduzione ai tipi e alle librerie essenziali
Capitolo 16 - Caratteri e stringhe
La classe Character
Alcuni metodi del tipo Character
La classe String
Alcuni metodi del tipo String
La classe StringBuilder
Alcuni metodi del tipo StringBuilder
La classe StringTokenizer
Alcuni metodi del tipo StringTokenizer
Capitolo 17 - Espressioni regolari
Concetti propedeutici
Corrispondenza precisa con il carattere indicato
Corrispondenza con una classe di caratteri non predefinita
Corrispondenza con una classe di caratteri predefinita
Corrispondenze di limite
Corrispondenze con quantificatori greedy
Corrispondenze con gli operatori logici
Corrispondenze con costrutti speciali
Espressioni regolari con la classe String
Le classi Pattern e Matcher
Alcuni metodi del tipo Pattern
Alcuni metodi del tipo Matcher
Capitolo 18 - Collezioni
Il framework di Java per le collezioni
L’interfaccia Collection
L’interfaccia Set
L’interfaccia SortedSet
L’interfaccia NavigableSet
L’interfaccia List
L’interfaccia Queue
L’interfaccia Deque
L’interfaccia Map
L’interfaccia SortedMap
L’interfaccia NavigableMap
Implementazioni dell’interfaccia Set
Implementazioni dell’interfaccia List
Implementazioni delle interfacce Queue e Deque
Implementazioni dell’interfaccia Map
Le interfacce Comparable e Comparator
Le interfacce Iterator, ListIterator e Iterable
Algoritmi polimorfici sulle collezioni
Collezioni concorrenti
Stream
Il package java.util.stream
Concetti preliminari
Tipologie di iterazioni
Operazioni sugli stream
Parallelismo
Ordinamento
Riduzione
Riduzione mutabile
Alcuni metodi del tipo Stream
Alcuni metodi del tipo Collectors
Capitolo 19 - Programmazione concorrente
Processi e thread
Stati di un thread
Priorità dei thread
La classe Thread e l’interfaccia Runnable
Alcuni metodi del tipo Thread
Sincronizzazione fra i thread
Un esempio di mutex
Un esempio di cooperazione
Liveness dei thread
Un esempio di deadlock
Un esempio di starvation
Un esempio di livelock
Concorrenza con le API ad alto livello
Il package java.util.concurrent
Il package java.util.concurrent.locks
Il package java.util.concurrent.atomic
Capitolo 20 - Input/Output: stream e file
Utilizzo degli stream
Alcuni metodi del tipo BufferedReader
Alcuni metodi del tipo BufferedWriter
Scansione e formattazione del testo
Le nuove API per l’input e l’output (NIO.2)
L’interfaccia Path
Alcuni metodi del tipo Path
La classe Files
Alcuni metodi del tipo Files
L’interfaccia PathMatcher
L’interfaccia FileVisitor
L’interfaccia WatchService
Capitolo 21 - Programmazione di rete
Teoria di base
Classificazione delle reti
Livelli e protocolli di rete
Il modello OSI e la suite TCP/IP
Trasmissione dei dati e mezzi trasmissivi
Indirizzi IP
Il protocollo TCP
Il protocollo UDP
DNS
La posta elettronica
Il World Wide Web
Le API per l’accesso alle interfacce di rete
Alcuni metodi del tipo NetworkInterface
Alcuni metodi del tipo InetAddress
Utilizzo degli URL
Alcuni metodi del tipo URL
Alcuni metodi del tipo UrlConnection
Utilizzo dei socket
Alcuni metodi del tipo ServerSocket
Alcuni metodi del tipo Socket
Utilizzo dei datagrammi
Alcuni metodi del tipo DatagramSocket
Alcuni metodi del tipo DatagramPacket
Parte V - Appendici
Appendice A - Installazione e configurazione della piattaforma Java SE 9
Appendice B - Installazione e utilizzo di NetBeans
Sviluppare applicazioni Java SE con l’IDE
Creazione di un progetto che fa uso dei moduli
Appendice C - Sistemi numerici: cenni
← Prev
Back
Next →
← Prev
Back
Next →