In questa pagina

Tutorial Java: guide pratiche per i problemi Java di tutti i giorni

Java è un linguaggio orientato agli oggetti e tipizzato staticamente che gira sulla JVM: lo stesso codice alimenta backend aziendali, app Android e sistemi bancari. La maggior parte delle persone lo impara nel modo in cui lo usa: un problema concreto alla volta. Questa pagina è la mappa delle oltre 1.000 guide pratiche Java di DelftStack. Le guide sono raggruppate qui sotto in base al lavoro che stai cercando di portare a termine — accorciare stringhe, decodificare un errore del compilatore, sommare un array, leggere file — e ogni gruppo si apre con guide selezionate dalla redazione che rispondono alle domande più frequenti dei lettori. Se stai scrivendo il tuo primo programma Java, parti dal percorso di apprendimento; se sei arrivato con un errore o un’attività precisa, salta direttamente al gruppo che le corrisponde.

Il percorso di apprendimento Java: partire da stringhe e dati di base, gestire le attività quotidiane, correggere gli errori, poi passare a classi e costruttori di GUI

Il percorso di apprendimento Java

Non devi leggere 1.000 guide in ordine. Un itinerario affidabile parte da stringhe e caratteri, perché ogni programma manipola testo, poi insegna come array ed elenchi conservano i dati, poi aggiunge le utilità di tutti i giorni — date, numeri casuali, file — e solo allora dedica tempo serio agli errori del compilatore e a concetti orientati agli oggetti come il binding. Java premia quest’ordine: una volta che sai che cosa il codice sta cercando di esprimere, i rigidi messaggi di errore del compilatore diventano leggibili. Considera le fasi qui sotto come una lista di controllo; quando una ti sembra facile, vai avanti.

  1. Parti dal testo. Impara a ottenere l’ultimo carattere di una stringa e a convertire una stringa in un char — la gestione dei char compare in quasi ogni programma per principianti.
  2. Dati di base. Somma un array e inizializza gli elementi di un array a zero; è con gli array che cicli e indici diventano chiari.
  3. Attività quotidiane. Stampare la data di oggi, generare un numero casuale, leggere ogni file di una cartella: i gruppi su date e file qui sotto coprono questo lavoro quotidiano.
  4. Correggi gli errori. Quando il compilatore rifiuta il tuo codice, la guida su identifier expected e le altre guide sugli errori ti mostrano come trovare la causa invece di tirare a indovinare.
  5. Vai oltre. Scopri in che cosa differiscono il binding statico e quello dinamico, oppure costruisci una prima finestra con un costruttore di GUI.

Dopo il percorso, usa questa pagina come riferimento: ogni gruppo qui sotto è autonomo, e l’indice alfabetico completo sotto ogni sezione elenca tutte le oltre 1.000 guide, compresa la lunga coda che le liste selezionate non possono coprire.

Stringhe e caratteri

Il lavoro sul testo in Java parte da un fatto scomodo: una String è un oggetto e un char è un primitivo, e passare dall’uno all’altro all’inizio confonde tutti. Leggi le prime due guide come una coppia: trattano lo stesso carattere finale da direzioni opposte. Una mostra come leggere l’ultimo carattere di una stringa; l’altra, richiamata in tutta la prima, mostra come rimuoverlo, che è ciò che di solito vuoi quando elimini un delimitatore finale o un a capo. La guida sulla conversione, poi, mostra come un’intera stringa diventa un array di char quando devi elaborarla lettera per lettera.

Errori, eccezioni e risoluzione dei problemi

Un errore del compilatore Java è una contestazione precisa, ma solo una volta che sai quale presupposto sta segnalando. Una famiglia di errori merita un’attenzione particolare: le ricerche legate a identifier expected e alle sue varianti sono tra i problemi Java più cercati su questo sito, mentre le risposte si collocano appena fuori dalla prima pagina — significa che il compilatore ha trovato un token dove doveva comparire un nome (di variabile, metodo o parametro), di solito perché un’istruzione si trova fuori da qualsiasi metodo o a un parametro manca il tipo. Gli errori di installazione sono di natura diversa: il codice è a posto, ma Windows si rifiuta di avviarlo. Gli altri errori arrivano quando le tue classi crescono: un operatore applicato a tipi sbagliati, e un metodo che il compilatore non riesce a trovare sul tipo su cui lo hai chiamato. Le guide selezionate di questo gruppo sono al momento disponibili solo in inglese; gli altri argomenti del gruppo si consultano dall’indice qui sotto.

Array e collezioni

Gli array sono la prima struttura dati di Java e quella su cui si fondano tutte le altre collezioni, quindi questo gruppo parte dalle due operazioni che scriverai più spesso: sommare tutto e impostare tutto a un valore iniziale noto. La guida sulla somma è anche un tour dello stile Java moderno: lo stesso ciclo scritto con gli stream mostra quanto il linguaggio sia cambiato. La guida sull’azzeramento risponde a una domanda che sorprende i programmatori C: Java inizializza già gli elementi degli array per te, e i metodi espliciti esistono per reimpostare un array già in uso. La guida sull’ordinamento è il ponte verso il lavoro reale, dove a dover essere ordinati per un campo come una data sono oggetti, non primitivi.

Conversione di tipi e operatori

Il sistema di tipi di Java è rigido, il che rende conversioni e operatori una fonte permanente di domande per i principianti. La guida qui sotto tratta il caso dei numeri negativi, dove l’operatore % di Java e Math.floorMod() divergono davvero — e dove scegliere quello sbagliato cambia il risultato in silenzio, senza alcun errore a segnalartelo.

  • Il modulo in Java — Calcola i resti con l’operatore %, e passa a Math.floorMod() quando gli operandi negativi devono restituire un risultato non negativo.

Date, numeri casuali e utilità

Questo piccolo gruppo converte meglio di qualsiasi altro della pagina: ogni guida risponde a una domanda breve e precisa. Le guide sulle date mostrano una libreria in transizione: le vecchie classi java.util.Date e Calendar riempiono ancora il codice esistente, mentre java.time (LocalDate, LocalDateTime, ZonedDateTime) è ciò che dovresti scrivere oggi, e le guide indicano quale è quale. La guida sui numeri casuali copre i tre generatori e quando ciascuno è appropriato. La pulizia della console e il ritardo sono le utilità di cui ogni programma a riga di comando finisce per avere bisogno — con avvertenze oneste, perché Java nasconde deliberatamente il terminale e perché una pausa bloccante a volte è lo strumento sbagliato.

  • Generare un numero casuale tra 1 e 10 in Java — Estrai un valore inclusivo tra 1 e 10 con java.util.Random, Math.random() o ThreadLocalRandom — e sappi quale scegliere in presenza di concorrenza.
  • Ottenere la data di oggi in Java — La data di oggi con java.util.Date, oppure le moderne LocalDate, LocalDateTime e ZonedDateTime quando conta il fuso orario.
  • Ottenere l’anno corrente in Java — Leggi l’anno corrente tramite LocalDate, Calendar, Date, YearMonth o Joda Time, da una data completa fino a un singolo intero.
  • Pulire la console in Java — Pulisci il terminale con sequenze di escape ANSI o un comando del sistema operativo tramite ProcessBuilder, dopo aver verificato che cosa supportano il tuo terminale e il tuo sistema operativo.
  • Ritardare di qualche secondo in Java — Metti in pausa con Thread.sleep() o TimeUnit.sleep(), e pianifica invece di bloccare con ScheduledExecutorService quando altro lavoro deve continuare.

I/O su file e proprietà

Il codice sui file in Java segue una sola forma: individuare e leggere. La guida qui sotto copre la lettura di una cartella, che scala da un semplice elenco piatto a una visita ricorsiva completa, e ordina gli approcci in base alla profondità del tuo albero di directory.

GUI e JavaFX

La storia del desktop Java è vecchia e ancora molto cercata, spinta da una sola domanda: come costruire una finestra senza scrivere a mano il codice di layout per ogni pulsante. La risposta onesta è che Swing resta il framework nella maggior parte del codice esistente, JavaFX è il toolkit più recente, e in entrambi i casi un costruttore visuale cambia il lavoro: dal posizionare i componenti nel codice al disporli su una tela e collegare gli eventi. Parti dalla guida al costruttore se mantieni o stai iniziando un’applicazione Swing; le altre guide del gruppo, nell’indice qui sotto, sono gli approfondimenti per controlli ed eventi specifici. La guida selezionata di questo gruppo è al momento disponibile solo in inglese, quindi in questa sezione trovi solo il testo della guida, e le altre guide si raggiungono dall’indice.

Classi e metodi

Questo gruppo è deliberatamente selettivo: due temi, ognuno dei quali apre un argomento più ampio. La decompilazione risponde a un’emergenza pratica: hai un file .class o una libreria JAR e nessun sorgente, e devi sapere che cosa fa il codice. Il binding risponde a una domanda concettuale che colloqui ed esami adorano, perché decide quale metodo viene eseguito davvero: la scelta fatta in compilazione dal tipo del riferimento, oppure quella fatta a runtime dall’oggetto stesso. Il binding si legge bene tenendo a mente il gruppo degli errori: metà della confusione sul «method undefined» è in realtà un fraintendimento del binding. Le guide selezionate di questo gruppo sono al momento disponibili solo in inglese.

Domande frequenti

Che cosa causa l’errore «identifier expected» in Java?

Il compilatore è arrivato a un punto in cui la grammatica richiede un nome — di variabile, metodo o parametro — e ha trovato qualcos’altro. Le cause abituali sono un’istruzione scritta direttamente nel corpo della classe invece che dentro un metodo, un parametro dichiarato senza il suo tipo, una parentesi graffa fuori posto che chiude un metodo troppo presto, o una risorsa dichiarata in modo scorretto in un try-with-resources. Leggi la riga che indica, poi controlla che cosa la precede immediatamente. La guida su identifier expected esamina ogni causa con una lista di controllo da eseguire prima di ricompilare.

Come genero un numero casuale tra 1 e 10 in Java?

Crea un Random e chiama nextInt(10) + 1: nextInt(10) restituisce 0–9, quindi lo spostamento rende l’intervallo inclusivo a entrambe le estremità. Per un uso rapido e una tantum, (int) (Math.random() * 10) + 1 fa lo stesso lavoro, e nel codice concorrente ThreadLocalRandom.current().nextInt(1, 11) evita la contesa — nota che il suo limite superiore è esclusivo. La guida sui numeri casuali confronta i tre approcci e i loro intervalli.

Esiste typeof in Java?

No: Java non ha un operatore typeof. Gli equivalenti più vicini sono obj.getClass(), che restituisce la classe di runtime dell’oggetto, e instanceof, che verifica se un oggetto appartiene a un tipo o a uno dei suoi sottotipi. Quale dei due ti serve dipende dalla domanda: getClass() risponde a «che cos’è, esattamente?», mentre instanceof risponde a «posso trattarlo come uno di questi?». Gli oggetti wrapper aggiungono un’insidia, perché un Integer dichiara Integer.class, mai int. La guida sulla classe di runtime mostra entrambi, con i casi dei wrapper.

Come ritardo l’esecuzione di qualche secondo in Java?

Chiama Thread.sleep(3000) per mettere in pausa il thread corrente per tre secondi, e gestisci l’InterruptedException che dichiara: catturala oppure lasciala propagare. TimeUnit.SECONDS.sleep(3) esprime lo stesso ritardo in un’unità con nome e si legge meglio nel codice revisionato. Se il thread ha altro lavoro da fare, non bloccarlo affatto: pianifica il passo ritardato con ScheduledExecutorService. La guida sul ritardo copre sia le chiamate bloccanti sia la via della pianificazione.

Perché l’installazione di Java non riesce con «errors in the following switches»?

Questo messaggio di Windows di solito significa che un file .jar è stato passato all’installatore o al launcher Java con opzioni che non capisce — il più delle volte perché l’associazione dei file .jar punta all’eseguibile sbagliato, così che un doppio clic su un programma scatena un errore in stile installazione. Punta l’associazione a javaw.exe, poi prova lo stesso JAR dal prompt dei comandi per separare un problema di associazione da un download danneggiato. Reinstallare Java aiuta solo quando manca o è danneggiato il launcher stesso. La guida sulle opzioni di installazione percorre i controlli in ordine.

Passi successivi

Due gruppi qui sopra stanno crescendo in sotto-guide dedicate: Errori, eccezioni e risoluzione dei problemi, dove i lettori arrivano con problemi urgenti e il cluster di identifier expected si comporta già come un argomento a sé, e Stringhe e caratteri, il gruppo più cliccato di questa raccolta. Finché non arrivano, le sezioni qui sopra sono i punti di ingresso. Per un linguaggio tipizzato dinamicamente o un ecosistema diverso, prosegui con le guide pratiche Python o le guide pratiche C#.