← Back to course

Il tuo primo programma Java

Bentornato! ☕

Nella lezione precedente abbiamo preparato il nostro ambiente di sviluppo:

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.

Il tuo primo programma Java in IntelliJ IDEA


Cosa imparerai

Alla fine di questa lezione saprai:

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:

static permette 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[] args fa parte della dichiarazione standard del metodo main().

È 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:

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.

Continua → Lezione 3: Come Java esegue il tuo codice