★ Da sapere
📌 Un linguaggio multipiattaforma può richiedere ricompilazione e modifiche al codice per ogni nuova piattaforma, mentre Java è interpiattaforma perché può essere eseguito senza modifiche su piattaforme diverse dotate di JVM.
Approfondimenti
Java interpiattaforma senza porting, C multipiattaforma con porting
★ Da sapere
📌 Le applicazioni a console usano un'interfaccia testuale, mentre le applicazioni GUI usano elementi grafici come mouse, pulsanti, menu e campi di testo.
📌 Le applicazioni e le apps sono programmi eseguiti direttamente attraverso la JVM, mentre le applet vengono eseguite all'interno di un browser.
Approfondimenti
★ Da sapere
📌 Un'istanza, o oggetto, è un rappresentante concreto e specifico di una classe, mentre la classe descrive genericamente gli elementi della famiglia.
📌 Gli attributi descrivono le caratteristiche o lo stato di un oggetto, mentre i metodi descrivono le operazioni e i comportamenti che l'oggetto può compiere.
Approfondimenti
📐 Formula - La dot notation per riferirsi a una proprietà usa la forma .
📐 Formula - La dot notation per invocare un metodo usa la forma .
La classe è uno stampo astratto, l'oggetto è il prodotto concreto
★ Da sapere
📌 In Java ogni istruzione deve terminare con un punto e virgola, mentre le parentesi graffe delimitano i blocchi di classi, metodi o istruzioni.
📌 Prima di essere utilizzata, una variabile Java deve essere inizializzata assegnandole un valore; la dichiarazione specifica il tipo e il nome della variabile.
Approfondimenti
📌 I commenti /commento/ possono estendersi su più righe, mentre i commenti //commento valgono dalla doppia barra fino alla fine della riga.
📌 Le costanti a virgola mobile sono considerate di tipo double se non diversamente specificato; per assegnarle a una variabile float occorre aggiungere il suffisso f o F, come in 180.50f.
Sorgente .java → javac → bytecode .class → java → JVM
★ Da sapere
Java riconosce le seguenti costanti:
Le costanti a virgola mobile sono considerate di tipo double se non viene specificato diversamente; per assegnarle a un float bisogna aggiungere il suffisso f o F, come in 180.50f.
L'operatore di assegnazione = assegna alla variabile di sinistra il risultato dell'espressione a destra, mentre l'operatore relazionale == confronta due valori e restituisce un booleano.
Gli operatori ++ e -- possono essere prefissi o postfissi: nella forma prefissa modificano l'operando prima di usarne il valore, mentre nella forma postfissa lo modificano dopo averne usato il valore.
Gli operatori && e || sono cortocircuitati e non valutano l'operando destro quando il risultato è già determinato dall'operando sinistro.
L'operatore ternario ha sintassi Expression1 ? Expression2 : Expression3 e restituisce Expression2 se la condizione booleana è vera, altrimenti Expression3.
Approfondimenti
La divisione tra due variabili int produce un risultato intero, mentre il resto della divisione tra interi è restituito dall'operatore %.
Lo shift a destra di n posizioni equivale in pratica a dividere il valore per , mentre lo shift a sinistra di n posizioni equivale a moltiplicarlo per .
= assegna, == confronta
★ Da sapere
📌 Un valore int, float o double concatenato a una stringa produce una stringa, come nell'espressione 2+"ab", il cui risultato è "2ab".
📌 Se un'espressione contiene operatori con la stessa precedenza, in generale vengono valutati da sinistra a destra; le parentesi tonde possono modificare l'ordine e le espressioni più interne vengono valutate per prime.
Approfondimenti
Tipo più grande → conversione implicita; tipo più piccolo → casting esplicito
★ Da sapere
System.out.print() e System.out.println() visualizzano sul monitor il testo passato come parametro attraverso lo stream out della classe System.
Per leggere una riga dalla tastiera si crea un InputStreamReader su System.in, si crea un BufferedReader usando tale oggetto e si invoca readLine().
Il package java.lang è incluso automaticamente, mentre java.io contiene le classi per la gestione dei file e dei flussi di input e output.
Approfondimenti
📌 L'istruzione import java.awt.* importa le classi direttamente contenute in java.awt, ma non importa automaticamente i package annidati come java.awt.event.
System.in → InputStreamReader → BufferedReader → readLine()
★ Da sapere
🔄 La gestione standard di un'eccezione comprende: eseguire il codice soggetto a eccezioni nel blocco try, eseguire il codice di recupero nel blocco catch, eseguire comunque il blocco finally, se presente
Un blocco try contiene il codice soggetto a eccezioni, mentre uno o più blocchi catch contengono il codice da eseguire per i diversi tipi di eccezione.
Per leggere un valore numerico da tastiera si legge prima una stringa e poi la si converte con Integer.parseInt() per gli interi o Float.parseFloat() per i valori float.
📌 La clausola throws segnala accanto al metodo o alla classe le eccezioni che possono essere generate ma non sono gestite al suo interno.
Approfondimenti
La clausola finally viene generalmente usata per rilasciare risorse esterne o chiudere un file aperto, indipendentemente dal verificarsi di un'eccezione.
Alcune eccezioni Java riguardano:
📌 Quando lo stesso codice può sollevare più tipi di eccezione, si utilizzano più blocchi catch, uno per ciascun tipo da gestire.
try → catch → finally
★ Da sapere
L’operatore == confronta due valori nelle espressioni condizionali, mentre l’operatore = assegna un valore a una variabile; confonderli produce un errore logico.
Nell’istruzione switch, break fa uscire dal costrutto dopo l’esecuzione del case, mentre la sua assenza provoca l’esecuzione dei blocchi successivi indipendentemente dal valore dell’espressione.
Il ciclo while valuta la condizione prima del blocco e può quindi eseguirlo zero volte, mentre do-while valuta la condizione dopo il blocco e lo esegue almeno una volta.
Il ciclo for esegue nell’ordine l’inizializzazione, il controllo della condizione, il blocco di istruzioni e l’espressione di fine blocco, ripetendo poi il controllo della condizione.
Approfondimenti
📌 L’istruzione break interrompe il ciclo e salta alla prima istruzione successiva, mentre continue interrompe l’iterazione corrente e passa a quella successiva.
while controlla in testa, do-while controlla in coda
★ Da sapere
Per creare un array si dichiara il tipo e il nome, si usa new indicando il numero di elementi e, se necessario, si inizializzano gli elementi.
Gli array Java usano indici a partire da 0 e un array di 5 elementi ha quindi indici da 0 a 4; l’accesso a animali[5] genera un’eccezione ArrayIndexOutOfBounds.
La proprietà length contiene il numero di elementi dell’array e non può essere usata per modificarne la dimensione dopo la creazione.
Approfondimenti
Una matrice come una griglia di righe e colonne indicizzate da zero
★ Da sapere
Il metodo length() restituisce la lunghezza di una stringa e charAt(int pos) restituisce il carattere presente nella posizione indicata.
I metodi indexOf() e lastIndexOf() cercano rispettivamente la prima e l’ultima posizione di un carattere o di una stringa, restituendo -1 se la ricerca fallisce.
📌 Il metodo equals() confronta il contenuto di due stringhe, mentre gli operatori relazionali non devono essere usati per confrontare le stringhe.
Approfondimenti
📌 I metodi replace(), toLowerCase() e toUpperCase() restituiscono una nuova stringa modificata, perché gli oggetti String originali sono immutabili.
String è immutabile, StringBuffer è modificabile
📌 In Java funzioni, istruzioni e programmi devono essere contenuti all'interno di classi.
📌 Le variabili locali sono visibili solo nel metodo in cui sono dichiarate e cessano di esistere quando il metodo termina, mentre le variabili di istanza appartengono alla classe, possono avere valori diversi in ogni oggetto e persistono per tutta la vita dell'istanza.
📌 La parola chiave void indica che un metodo non restituisce valori, mentre l'istruzione return restituisce eventualmente un valore e termina l'esecuzione del metodo.
Variabili locali dentro i metodi, variabili istanza nella classe
★ Da sapere
La creazione di un oggetto avviene dichiarando una variabile del tipo della classe e allocando l'istanza con new seguito dal costruttore, oppure combinando le due operazioni in un'unica istruzione.
Gli oggetti comunicano tramite messaggi che specificano l'oggetto destinatario, il metodo da attivare e i parametri da passare, usando la notazione puntata.
📌 I tipi primitivi sono generalmente passati ai metodi per valore, mentre array e oggetti sono passati per riferimento, cioè tramite una copia del riferimento allo stesso oggetto.
📌 L'operatore == confronta i riferimenti degli oggetti e restituisce true quando due variabili contengono lo stesso riferimento, non quando due oggetti distinti hanno lo stesso contenuto.
Approfondimenti
Se una classe non specifica un costruttore, Java le associa un costruttore vuoto di default che non esegue operazioni alla creazione dell'oggetto.
Una variabile oggetto dichiarata ma non ancora allocata contiene il valore null, che indica che non fa riferimento ad alcun oggetto.
📌 Per leggere o modificare in modo controllato gli attributi si usano metodi Get() e Set(), soprattutto quando gli attributi hanno visibilità private.
new crea l'istanza → i messaggi attivano i suoi metodi
★ Da sapere
Approfondimenti
Il costruttore Vettore(int n) crea un array di n elementi e assegna n al numero massimo di elementi del vettore.
La classe Vettore può essere estesa con metodi per ordinare gli elementi in ordine crescente e per eseguire la ricerca sequenziale o binaria.
Crea → riempi → visualizza → ricerca
★ Da sapere
📐 Formula - Per un intero non negativo, il fattoriale soddisfa e per .
Approfondimenti
📌 La ricorsione richiama lo stesso metodo durante la propria esecuzione, mentre l'iterazione ripete le istruzioni mediante una struttura come while.
public comunica, private nasconde
📌 L'overriding ridefinisce nella sottoclasse un metodo con la stessa segnatura della superclasse, mentre l'estensione aggiunge nuovi metodi o attributi.
Eredita → ridefinisce → estende
★ Da sapere
📌 Un attributo final non può essere modificato, un metodo final non può essere ridefinito e una classe final non può avere sottoclassi.
Approfondimenti
Classe astratta parzialmente implementata, interfaccia solo contratto
★ Da sapere
📐 Formula - Il calcolo dell'ipotenusa di un triangolo rettangolo con cateti Cateto1 e Cateto2 restituisce .
La classe Math è dichiarata final, quindi non può essere estesa creando sottoclassi.
Un metodo statico può essere chiamato usando il nome della classe, come NuovaMath.ipotenusa(), senza creare oggetti della classe.
Il costruttore alloca e inizializza la memoria di un oggetto, mentre il metodo distruttore svolge le azioni finali prima della sua deallocazione.
🔄 Il recupero di un oggetto non più referenziato avviene così: non esiste più alcun riferimento all'oggetto, l'oggetto viene contrassegnato per la rimozione, la memoria viene resa nuovamente disponibile al sistema
📌 Il metodo distruttore finalize(), ereditato da java.lang.Object, viene chiamato automaticamente dalle procedure di garbage collection per rimuovere gli oggetti non più utilizzati.
Le conoscenze del blocco tematico comprendono:
🔄 Le funzionalità grafiche di Java si studiano in questa sequenza:
Approfondimenti
📌 Se finalize() viene ridefinito, è conveniente chiamare super.finalize() prima della chiusura del metodo per non perdere le azioni previste dalla superclasse.
Math è final e non si estende; NuovaMath raccoglie i nuovi metodi.
| Costrutto | Controllo | Esecuzione minima |
|---|---|---|
| while | In testa | Zero volte |
| do-while | In coda | Una volta |
| for | Condizione tra inizializzazione e aggiornamento | Dipende dalla condizione |
| Aspetto | Variabile locale | Variabile di istanza |
|---|---|---|
| Dichiarazione | Dentro un metodo | Nella classe, fuori dai metodi |
| Visibilità | Solo nel metodo | Associata all'istanza |
| Durata | Fino alla fine del metodo | Per tutta la vita dell'istanza |
Mettiti alla prova su Costanti operatori e gestione Java con 67 domande a risposta multipla e correzioni spiegate.
1. Quale descrizione identifica correttamente Java?
2. Un programma Java deve essere eseguito su una piattaforma diversa da quella di sviluppo: quale condizione caratterizza la sua portabilità interpiattaforma?
Memorizza i concetti chiave di Costanti operatori e gestione Java con 93 flashcard interattive.
Che tipo di linguaggio è Java?
Un linguaggio orientato agli oggetti, general purpose e interpiattaforma.
Chi ha creato Java e quando?
Sun Microsystems verso la metà degli anni Novanta.
Perché Java è definito interpiattaforma?
Perché può essere eseguito senza modifiche su piattaforme diverse con JVM.
Importa il tuo corso e l'IA genera riassunto, quiz e flashcard in 30 secondi.
Generatore di riassunti