Il tuo primo programma Java
Bentornato! ☕
Nella lezione precedente abbiamo preparato il nostro ambiente di sviluppo:
- Java 25 LTS è installato;
- IntelliJ IDEA è pronto;
- il nostro progetto esiste;
- e, con un po' di fortuna, non è ancora esploso nulla.
Ora è finalmente arrivato il momento di fare ciò per cui siamo qui:
scrivere un po' di Java.
In questa lezione creeremo il nostro primo vero programma Java:
public class Main {
public static void main(String[] args) {
System.out.println("Hello, InnoMarts!");
}
}
A prima vista sembra una quantità sospettosamente grande di codice soltanto per stampare una frase.
Tranquillo.
Alla fine della lezione, gran parte di questo codice avrà già molto più senso.

Cosa imparerai
Alla fine di questa lezione saprai:
- creare una classe Java;
- scrivere il tuo primo programma Java completo;
- eseguire codice Java in IntelliJ IDEA;
- comprendere la struttura di base di una classe Java;
- capire cos'è
main(); - stampare testo nella console;
- utilizzare
print()eprintln(); - riconoscere le istruzioni Java;
- comprendere il punto e virgola e le parentesi graffe;
- aggiungere commenti;
- rompere volontariamente il programma;
- leggere alcuni dei più comuni errori del compilatore.
Sì.
Rompere il programma fa ufficialmente parte della lezione.
Benvenuto nello sviluppo software. 😄
1. Apri il tuo progetto Java
Apri IntelliJ IDEA e carica il progetto che abbiamo creato nella Lezione 1:
java-course
Nel pannello Project dovresti vedere qualcosa di simile:
java-course
└── src
La cartella src è il posto in cui salveremo il nostro codice sorgente Java.
Ora dobbiamo finalmente metterci qualcosa dentro.
2. Crea la tua prima classe Java
Fai clic con il tasto destro sulla cartella src.
Scegli:
New → Java Class
Inserisci:
Main
e premi Invio.
IntelliJ IDEA creerà:
Main.java
All'interno dovresti vedere qualcosa di simile:
public class Main {
}
Complimenti.
Hai appena creato la tua prima classe Java.
Al momento non fa assolutamente nulla.
Ma non giudichiamola troppo in fretta.
Esiste soltanto da cinque secondi.
3. Cos'è una classe?
I programmi Java sono costruiti attorno alle classi.
Per il momento puoi immaginare una classe come un contenitore in cui inseriamo codice collegato a un determinato concetto.
Più avanti nel corso creeremo classi come:
User
Car
Product
BankAccount
Task
Order
Oggi, invece, iniziamo con il tradizionale:
Main
La dichiarazione della nostra classe è:
public class Main {
}
Vediamola pezzo per pezzo.
public
La parola:
public
è chiamata modificatore di accesso.
Per ora è sufficiente sapere che permette alla classe di essere accessibile da altre parti del programma.
Studieremo i modificatori di accesso con più calma quando arriveremo alla Programmazione Orientata agli Oggetti.
Quindi non provare a memorizzare tutto l'universo Java oggi.
Il tuo cervello ha già abbastanza schede aperte.
class
La parola chiave:
class
dice a Java:
"Sto definendo una classe."
Java possiede molte parole chiave con un significato speciale.
class è una di queste.
Main
Questo è il nome della nostra classe:
Main
In Java i nomi delle classi normalmente iniziano con una lettera maiuscola.
Per esempio:
Main
User
Product
BankAccount
ShoppingCart
Ora attenzione a una cosa molto importante.
Java distingue tra lettere maiuscole e minuscole.
In altre parole, Java è case-sensitive.
Quindi:
Main
main
MAIN
sono tre nomi differenti.
Java non li guarda pensando:
"Beh, più o meno è la stessa cosa."
Java è decisamente meno indulgente dei tuoi amici.
4. Perché il file si chiama Main.java?
Il nostro file si chiama:
Main.java
e al suo interno abbiamo:
public class Main
Quando una classe principale viene dichiarata public, il nome del file deve corrispondere al nome della classe.
Quindi:
public class Main
deve trovarsi in:
Main.java
Una classe:
public class User
deve invece trovarsi in:
User.java
E questa:
public class VeryImportantEnterpriseApplication
finirebbe in:
VeryImportantEnterpriseApplication.java
Sì.
A Java piacciono le regole.
E i nomi lunghi.
Soprattutto i nomi lunghi.
5. Aggiungiamo il metodo main()
Ora modifica il file in questo modo:
public class Main {
public static void main(String[] args) {
}
}
La nuova riga importante è:
public static void main(String[] args)
Questo è il metodo main.
In una semplice applicazione Java, è qui che inizia l'esecuzione del programma.
Puoi immaginarlo come la porta d'ingresso del programma.
Quando Java chiede:
"Da dove devo iniziare?"
noi indichiamo:
main()
6. Il terrificante public static void main(String[] args)
Questa riga mette in difficoltà molti principianti:
public static void main(String[] args)
Sembra che qualcuno abbia cercato di infilare metà del linguaggio Java in una sola riga.
Rendiamola un po' meno misteriosa.
public
public
significa che il metodo può essere raggiunto dall'esterno della classe.
Per ora ci basta sapere questo.
static
static
permette a Java di utilizzare questo metodo senza dover prima creare un oggetto della classe Main.
Parleremo degli oggetti più avanti.
Molto più avanti.
Per ora puoi pensare:
staticpermette a Java di partire direttamente da qui.
void
void
significa che il metodo non restituisce alcun valore.
Più avanti creeremo metodi che restituiscono cose come:
42
"Hello"
true
un oggetto User
Ma main() non restituisce nulla.
Per questo usiamo:
void
main
Questo è semplicemente il nome del metodo:
main
Java si aspetta esattamente questo nome per il punto di ingresso standard del programma.
Nota la m minuscola.
Questo:
main
e questo:
Main
sono due cose completamente diverse.
Uno è il nostro metodo.
L'altro è la nostra classe.
String[] args
Infine abbiamo:
String[] args
Questo permette al programma di ricevere argomenti dalla riga di comando.
Per esempio, in futuro potremmo eseguire:
java Main Viktor
e ricevere:
Viktor
all'interno del programma.
Per il momento non useremo gli argomenti da riga di comando.
Anche gli array arriveranno più avanti nel corso.
Quindi per ora ricorda semplicemente:
String[] argsfa parte della dichiarazione standard del metodomain().
È sufficiente.
Non abbiamo bisogno di evocare le specifiche ufficiali di Java.
7. Facciamo dire qualcosa al programma
Il programma ora può partire correttamente, ma non fa ancora nulla di visibile.
Rimediamo subito.
Inserisci questa riga dentro main():
System.out.println("Hello, InnoMarts!");
Il programma completo dovrebbe essere:
public class Main {
public static void main(String[] args) {
System.out.println("Hello, InnoMarts!");
}
}
Questa è una vera applicazione Java funzionante.
Piccola?
Sì.
Importante?
Anche.
Ogni applicazione complessa nasce da piccoli pezzi come questo.
Anche se speriamo che il tuo futuro software bancario faccia qualcosa in più che salutare.
8. Esegui il tuo primo programma Java
IntelliJ IDEA dovrebbe mostrare una piccola icona verde Run accanto al metodo main().
Cliccala.
Puoi anche fare clic con il tasto destro nell'editor e scegliere qualcosa come:
Run 'Main.main()'
Nella parte inferiore di IntelliJ IDEA dovrebbe apparire la finestra Run.
Dovresti vedere:
Hello, InnoMarts!
Quello è l'output del tuo programma.
Hai scritto codice Java.
Java lo ha compilato.
La JVM lo ha eseguito.
E il computer ti ha obbedito.
Goditi questo momento.
Più avanti il computer inizierà ad avere delle opinioni.
9. Capire System.out.println()
Vediamo questa riga:
System.out.println("Hello, InnoMarts!");
È davvero molta punteggiatura per una semplice frase.
Dividiamola in pezzi.
System
System
è una classe fornita da Java.
Contiene diverse funzionalità utili collegate all'ambiente in cui il programma viene eseguito.
out
out
rappresenta lo standard output.
Nei nostri primi programmi possiamo semplicemente pensarlo come:
la console
println
println
significa più o meno:
stampa una riga.
Stampa qualcosa e poi passa alla riga successiva.
Quindi:
System.out.println("Hello!");
visualizza:
Hello!
e poi sposta il cursore alla riga successiva.
10. Stampare più righe
Rendiamo il programma un po' più loquace.
public class Main {
public static void main(String[] args) {
System.out.println("Hello!");
System.out.println("Welcome to Java.");
System.out.println("This is my first Java program.");
}
}
Eseguilo.
Dovresti ottenere:
Hello!
Welcome to Java.
This is my first Java program.
Ogni println() stampa una riga.
Semplice.
Utile.
E decisamente più interessante di una classe vuota che fissa il nulla.
11. print() contro println()
Java possiede anche:
System.out.print()
Nota che manca:
ln
Confrontiamo i due metodi.
Usando print()
System.out.print("Hello ");
System.out.print("Java");
System.out.print("!");
Output:
Hello Java!
Tutto rimane sulla stessa riga.
Ora prova:
System.out.println("Hello");
System.out.println("Java");
System.out.println("!");
Output:
Hello
Java
!
La differenza è:
print() → rimane sulla stessa riga
println() → passa alla riga successiva
Userai entrambi.
Ma nelle prime lezioni println() diventerà probabilmente uno dei tuoi migliori amici.
12. Cos'è una String?
Guarda:
"Hello, InnoMarts!"
Questa è una String.
Una String rappresenta del testo.
Altri esempi:
"Java"
"My name is Viktor"
"I need more coffee."
"Why is the compiler angry again?"
Sono tutte String.
Le String sono racchiuse tra doppi apici:
" "
Più avanti avremo un'intera lezione dedicata alle String.
Per ora ricorda:
Se vuoi che Java interpreti qualcosa come testo, probabilmente dovrai usare i doppi apici.
13. Cosa succede senza gli apici?
Questo funziona:
System.out.println("Hello");
Ora prova:
System.out.println(Hello);
IntelliJ inizierà a lamentarsi.
Perché?
Senza gli apici Java pensa che:
Hello
sia il nome di qualcosa.
Forse una variabile.
Forse un campo.
Forse qualche altra misteriosa creatura che non abbiamo ancora creato.
Dato che Java non riesce a trovarla, riceverai un errore.
Rimetti gli apici:
System.out.println("Hello");
e Java tornerà felice.
Per quanto possa esserlo un compilatore.
14. Cos'è un'istruzione?
Questa riga:
System.out.println("Hello!");
è un'istruzione Java.
Un'istruzione è, in pratica, un comando.
Stai dicendo a Java:
Fai questo.
Per esempio:
System.out.println("One");
System.out.println("Two");
System.out.println("Three");
contiene tre istruzioni.
Java le esegue dall'alto verso il basso.
Quindi l'output sarà:
One
Two
Three
e non:
Three
One
Banana
Two
I computer sono meravigliosamente prevedibili quando il codice è corretto.
15. Il punto e virgola ;
Guarda questa riga:
System.out.println("Hello");
Nota il punto e virgola:
;
In Java molte istruzioni terminano con un punto e virgola.
Puoi pensarlo come il punto alla fine di una frase.
Ora rimuovilo:
System.out.println("Hello")
IntelliJ dovrebbe segnalare immediatamente un problema.
Prova a eseguire il programma.
Potresti vedere un errore simile a:
';' expected
Java ti sta praticamente chiedendo:
"Scusa, avevi finito questa istruzione?"
Rimettilo:
System.out.println("Hello");
e tutto tornerà a funzionare.
16. Le parentesi graffe { }
Il nostro programma contiene parentesi graffe:
{
}
Servono a definire blocchi di codice.
Per esempio:
public class Main {
}
Le parentesi contengono tutto ciò che appartiene alla classe.
All'interno della classe abbiamo:
public static void main(String[] args) {
}
Queste parentesi contengono tutto ciò che appartiene al metodo main().
La struttura del nostro programma può quindi essere vista così:
Classe Main
{
metodo main
{
istruzioni
}
}
Questa idea di blocchi dentro altri blocchi compare praticamente ovunque in Java.
17. L'indentazione è importante — per gli esseri umani
Tecnicamente anche questo può essere Java valido:
public class Main {
public static void main(String[] args) {
System.out.println("Hello");
}
}
Java riesce a capirlo.
Anche gli esseri umani, tecnicamente, riescono a capirlo.
Ma gli esseri umani probabilmente inizieranno a odiarti.
Meglio scrivere:
public class Main {
public static void main(String[] args) {
System.out.println("Hello");
}
}
L'indentazione rende immediatamente visibile la struttura del codice.
IntelliJ IDEA può formattare automaticamente il codice.
Su molte configurazioni la scorciatoia è:
Ctrl + Alt + L
Provala.
Vedere del codice brutto diventare improvvisamente ordinato dà una soddisfazione sorprendente.
18. I commenti
A volte vogliamo lasciare una nota all'interno del codice.
Java deve ignorarla.
Gli esseri umani devono poterla leggere.
Per questo esistono i commenti.
Commenti su una riga
Un commento su una singola riga inizia con:
//
Per esempio:
public class Main {
public static void main(String[] args) {
// Stampa un saluto
System.out.println("Hello, InnoMarts!");
}
}
Java ignora:
// Stampa un saluto
Commenti su più righe
Java permette anche commenti su più righe:
/*
Questo è un commento.
Java ignora tutto questo.
Anche questa frase.
*/
Per esempio:
public class Main {
public static void main(String[] args) {
/*
Questo è il nostro primo programma Java.
Tra poco diventerà molto più interessante.
*/
System.out.println("Hello, InnoMarts!");
}
}
I commenti sono utili.
Ma non serve spiegare cose dolorosamente ovvie.
Questo:
// Stampa Hello
System.out.println("Hello");
non aggiunge molto.
I commenti migliori spiegano perché viene fatta una cosa, non semplicemente cosa fa il codice.
19. Rompiamo tutto apposta 💥
Ora arriva una competenza molto importante per un programmatore:
rompere volontariamente le cose.
Può sembrare strano.
Ma quando crei volontariamente un errore, impari a riconoscerlo.
Così, quando succederà accidentalmente più avanti, saprai già cosa stai guardando.
Errore 1 — Rimuovi il punto e virgola
Parti da:
System.out.println("Hello");
Rimuovi il punto e virgola:
System.out.println("Hello")
Guarda cosa mostra IntelliJ.
Prova a eseguire il programma.
Poi correggi l'errore.
Errore 2 — Scrivi system invece di System
Prova:
system.out.println("Hello");
Java distingue maiuscole e minuscole.
Quindi:
System
e:
system
sono nomi diversi.
Correggi:
System.out.println("Hello");
Errore 3 — Dimentica un apice
Prova:
System.out.println("Hello);
Ora Java non riesce più a capire dove termina la String.
Correggi:
System.out.println("Hello");
Errore 4 — Elimina una parentesi graffa
Rimuovi una:
}
dal programma.
Potresti improvvisamente vedere molti errori.
Questa è una lezione importante:
Un singolo errore può produrre molti messaggi di errore.
Se IntelliJ mostra 12 errori, non significa necessariamente che hai commesso 12 errori diversi.
A volte manca semplicemente una parentesi graffa e Java ha perso completamente il filo del discorso.
Comincia sempre dal primo errore.
20. Gli errori del compilatore sono utili
Quando un principiante vede del testo rosso, spesso pensa:
"Ho distrutto tutto."
Di solito non è così.
Il compilatore sta cercando di aiutarti.
Per esempio:
';' expected
contiene già un'informazione molto utile.
Java si aspettava:
;
e non l'ha trovato.
L'errore non significa:
"Sei terribile con Java."
Significa più o meno:
"Mi sono perso proprio qui. Dai un'occhiata."
Imparare a leggere i messaggi del compilatore è una delle competenze più importanti nella programmazione.
21. Il tuo primo programma personalizzato
Ora modifica il programma in modo che dica qualcosa su di te.
Per esempio:
public class Main {
public static void main(String[] args) {
System.out.println("My name is Viktor.");
System.out.println("I am learning Java.");
System.out.println("I use IntelliJ IDEA.");
System.out.println("My code has not exploded yet.");
}
}
Usa il tuo nome e le tue frasi.
A meno che tu non ti chiami davvero Viktor.
In quel caso puoi risparmiare un po' di digitazione. 😄
🎯 Sfida 1 — Developer Card
Crea un programma che visualizzi:
========================
DEVELOPER CARD
========================
Name: Viktor
Language: Java
IDE: IntelliJ IDEA
Level: Beginner
Goal: Build real projects
========================
Usa diversi:
System.out.println()
Prova a scrivere il programma senza copiare una soluzione completa.
🎯 Sfida 2 — print() + println()
Prova a ottenere esattamente questo output:
Hello, Java!
Let's build something.
Ma nella soluzione devi utilizzare sia:
System.out.print()
sia:
System.out.println()
Esistono più soluzioni corrette.
Sperimenta.
🎯 Sfida 3 — Prevedi il risultato prima di eseguire
Osserva questo codice:
public class Main {
public static void main(String[] args) {
System.out.print("Java ");
System.out.print("is ");
System.out.println("fun!");
System.out.println("Let's continue.");
}
}
Prima di premere Run, prova a prevedere esattamente quale sarà l'output.
Poi esegui il programma e confronta.
Questa abitudine è molto utile.
Invece di chiederti sempre:
"Che cosa ha fatto il computer?"
inizia a chiederti:
"Che cosa mi aspetto che faccia il computer?"
È un piccolo cambiamento, ma è un grande passo verso il modo di pensare di un programmatore.
22. Guardiamo di nuovo l'intero programma
Il nostro programma originale era:
public class Main {
public static void main(String[] args) {
System.out.println("Hello, InnoMarts!");
}
}
All'inizio della lezione sembrava piuttosto misterioso.
Ora ne comprendiamo già una buona parte.
public class Main
crea una classe chiamata Main.
public static void main(String[] args)
definisce il punto di ingresso dell'applicazione.
System.out.println(...)
stampa qualcosa nella console.
"Hello, InnoMarts!"
è una String.
;
termina un'istruzione.
E:
{ }
definiscono blocchi di codice.
Non male per la Lezione 2.
🎓 Cosa hai imparato
In questa lezione hai imparato:
- come creare una classe Java;
- perché la classe viene salvata in
Main.java; - cosa significa la parola chiave
class; - perché Java distingue maiuscole e minuscole;
- cos'è il metodo
main(); - il significato di base di
public,staticevoid; - a cosa serve
String[] args; - come stampare output con
System.out.println(); - la differenza tra
print()eprintln(); - cos'è una String;
- cos'è un'istruzione;
- perché Java usa il punto e virgola;
- a cosa servono le parentesi graffe;
- perché l'indentazione è importante;
- come funzionano i commenti;
- come creare e correggere volontariamente alcuni errori di base.
Ma soprattutto:
Ora sei in grado di creare, eseguire, modificare, rompere e riparare un semplice programma Java da solo. ☕
Questo è già vero progresso.
Cosa viene dopo?
Ora sappiamo scrivere codice Java.
Ma dietro le quinte sta succedendo ancora qualcosa.
Quando premi:
Run
come fa:
Main.java
a diventare un programma in esecuzione?
Che cosa crea realmente il compilatore Java?
Cos'è il bytecode?
Che cosa fa esattamente la JVM?
E perché lo stesso programma Java può essere eseguito su Windows, Linux e macOS?
È quello che scopriremo nella prossima lezione.