Sintassi Java: Guida Completa con Esempi

Sintassi Java: guida completa con esempi

La sintassi di Java definisce le regole con cui si scrivono classi, metodi, variabili e istruzioni. Conoscerla in modo chiaro è essenziale per evitare errori di compilazione, scrivere codice leggibile e sfruttare al meglio le funzionalità del linguaggio.

sintassi Java - guida completa con esempi

In questa guida trovi una panoramica completa della sintassi Java di base, con esempi pratici che puoi copiare, eseguire e modificare per fare esperienza reale.

Struttura e sintassi Java di base

Classe e file sorgente Java

Ogni file sorgente Java ha estensione .java e di solito contiene almeno una classe. In particolare, se una classe è dichiarata come pubblica, il nome del file deve coincidere esattamente con il nome della classe pubblica.

// File: HelloWorld.java
public class HelloWorld {

}



Un progetto reale contiene molte classi, organizzate in package. Ad ogni modo, il compilatore si aspetta che ogni file .java definisca almeno una classe o interfaccia.

Il metodo main nella sintassi Java

Un programma Java eseguibile deve definire almeno un metodo main con una firma precisa. In particolare, questo metodo è il punto di ingresso da cui la JVM inizia l’esecuzione.

// File: HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Ciao, mondo");
    }
}



Inoltre, il metodo main deve essere pubblico, statico, restituire void e accettare come parametro un array di String denominato args o con un altro nome a scelta.

Package e import in Java

I package servono a organizzare le classi in spazi dei nomi logici. In particolare, la dichiarazione di package, se presente, deve essere la prima istruzione non commento del file.

package it.example.basics;

import java.time.LocalDate;
import java.util.List;

public class Ordine {
    private String id;
    private LocalDate data;
    private List<String> prodotti;
}



L’istruzione import permette di utilizzare i nomi brevi dei tipi senza specificare ogni volta il package completo. Tuttavia, se non dichiari alcun package, le classi si trovano nel package di default, soluzione sconsigliata per progetti strutturati.

Commenti nel linguaggio Java

Commenti a singola linea in Java

I commenti a singola linea iniziano con due barre oblique e terminano a fine riga. In particolare, sono utili per note brevi e per disattivare temporaneamente una riga di codice.

public class CommentiSingolaLinea {
    public static void main(String[] args) {
        // Stampa un messaggio di benvenuto
        System.out.println("Benvenuto");
        // System.out.println("Questa riga è commentata e non verrà eseguita");
    }
}



Commenti multilinea nel codice Java

I commenti multilinea iniziano con /* e terminano con */. Inoltre, sono usati per spiegazioni più lunghe o per commentare blocchi di codice durante il debug.

public class CommentiMultilinea {
    public static void main(String[] args) {
        /*
         * Questo è un commento multilinea.
         * Può estendersi su più righe senza problemi.
         */
        System.out.println("Esempio di commento multilinea");
    }
}



Commenti Javadoc nella sintassi Java

I commenti Javadoc rappresentano una forma speciale di commento che inizia con \/** e viene usata per generare automaticamente la documentazione delle API.

/**
 * Rappresenta un conto bancario semplice.
 */
public class ContoBancario {
    private double saldo;

    /**
     * Deposita un importo positivo sul conto.
     *
     * @param importo valore maggiore di zero da depositare
     */
    public void deposita(double importo) {
        saldo = saldo + importo;
    }

    /**
     * Restituisce il saldo corrente.
     *
     * @return saldo del conto
     */
    public double getSaldo() {
        return saldo;
    }
}



Variabili e dichiarazione in Java

Dichiarazione di variabili in Java

Una variabile in Java si dichiara specificando prima il tipo e poi il nome. Inoltre, è possibile dichiarare e inizializzare la variabile nello stesso punto.

public class VariabiliBase {
    public static void main(String[] args) {
        int eta;
        eta = 25;

        double prezzo = 19.99;
        boolean attivo = true;
        char iniziale = 'A';

        System.out.println("Età: " + eta);
        System.out.println("Prezzo: " + prezzo);
        System.out.println("Attivo: " + attivo);
        System.out.println("Iniziale: " + iniziale);
    }
}



Variabili locali, di istanza e statiche in Java

Una variabile locale è dichiarata dentro un metodo o un blocco di codice e vive solo al suo interno. Diversa è la variabile di istanza, che viene dichiarata nella classe ma fuori dai metodi e appartiene a ogni oggetto. La variabile statica appartiene invece alla classe e viene condivisa da tutte le istanze.

public class Contatore {
    private static int contatoreGlobale = 0;   // variabile statica
    private int contatoreIstanze = 0;          // variabile di istanza

    public void incrementa() {
        int passo = 1;                         // variabile locale
        contatoreIstanze = contatoreIstanze + passo;
        contatoreGlobale = contatoreGlobale + passo;
    }
}



Tipi di dati primitivi in Java

I tipi primitivi rappresentano valori di base memorizzati direttamente in memoria, non oggetti. In totale, Java definisce otto tipi primitivi, ognuno con dimensione e intervallo propri.

Tipi interi nella sintassi Java: byte, short, int, long

public class TipiInteri {
    public static void main(String[] args) {
        byte b = 10;          // 8 bit
        short s = 2000;       // 16 bit
        int i = 100000;       // 32 bit
        long l = 1000000000L; // 64 bit, lettera L obbligatoria per i long letterali grandi

        System.out.println(b);
        System.out.println(s);
        System.out.println(i);
        System.out.println(l);
    }
}



Float e double nella sintassi Java

I tipi float e double rappresentano numeri in virgola mobile in formato IEEE 754. In particolare, double è il tipo di default per i valori decimali e offre maggiore precisione.

public class TipiDecimali {
    public static void main(String[] args) {
        float f = 3.14F;   // suffisso F obbligatorio per i float
        double d = 3.14159;

        System.out.println(f);
        System.out.println(d);
    }
}



Boolean e char in Java

Il tipo boolean può assumere solo i valori true e false, mentre char rappresenta invece un singolo carattere Unicode.

public class TipiBooleanChar {
    public static void main(String[] args) {
        boolean acceso = true;
        boolean valido = false;

        char lettera = 'J';
        char cifra = '7';

        System.out.println(acceso);
        System.out.println(valido);
        System.out.println(lettera);
        System.out.println(cifra);
    }
}



Operatori nella sintassi Java

Gli operatori permettono di combinare valori e variabili per produrre nuove espressioni. In particolare, Java include operatori aritmetici, di confronto, logici, di assegnazione e bitwise.

Operatori aritmetici in Java

public class OperatoriAritmetici {
    public static void main(String[] args) {
        int a = 7;
        int b = 3;

        int somma = a + b;
        int differenza = a - b;
        int prodotto = a * b;
        int divisioneIntera = a / b;
        int resto = a % b;

        System.out.println("somma = " + somma);
        System.out.println("differenza = " + differenza);
        System.out.println("prodotto = " + prodotto);
        System.out.println("divisioneIntera = " + divisioneIntera);
        System.out.println("resto = " + resto);
    }
}



Operatori di confronto e logici in Java

Gli operatori di confronto restituiscono un booleano. Inoltre, gli operatori logici combinano valori booleani usando connettivi come and, or e not.

public class OperatoriConfrontoLogici {
    public static void main(String[] args) {
        int eta = 20;
        boolean haPatente = true;

        boolean maggiorenne = eta >= 18;
        boolean puoGuidare = maggiorenne && haPatente;

        boolean isTeen = eta >= 13 && eta <= 19;
        boolean accessoSenior = eta >= 65;

        System.out.println("maggiorenne = " + maggiorenne);
        System.out.println("puoGuidare = " + puoGuidare);
        System.out.println("isTeen = " + isTeen);
        System.out.println("accessoSenior = " + accessoSenior);
    }
}



Operatori di assegnazione e incremento in Java

public class OperatoriAssegnazione {
    public static void main(String[] args) {
        int numero = 10;

        numero = numero + 5;
        numero += 3;
        numero -= 2;
        numero *= 2;

        int x = 1;
        int preIncremento = ++x;

        int y = 1;
        int postIncremento = y++;

        System.out.println("numero = " + numero);
        System.out.println("x = " + x + ", preIncremento = " + preIncremento);
        System.out.println("y = " + y + ", postIncremento = " + postIncremento);
    }
}



Convenzioni di naming nel linguaggio Java

CamelCase, PascalCase e costanti nel linguaggio Java

Le convenzioni di naming non sono imposte dal compilatore ma sono fondamentali per la leggibilità. Ad esempio, in Java si usano schemi diversi per classi, metodi, variabili e costanti.

package it.example.naming;

public class OrderService {              // PascalCase per classi

    private static final int MAX_RETRY = 3;  // UPPER_SNAKE_CASE per costanti

    private int currentRetry;               // camelCase per variabili di istanza

    public void processOrder() {            // camelCase per metodi
        System.out.println("Elaborazione ordine");
    }
}



Convenzioni per i package in Java

Per i package si usa solo minuscolo, senza underscore. In genere, è comune partire dal dominio invertito dell’azienda seguito dal nome del progetto e del modulo.

package it.miaazienda.app.ordini;

public class OrderController {
}



Input e output in Java: System.out e Scanner

Output con System.out.println in Java

La classe System espone un campo statico out, un oggetto di tipo PrintStream collegato all’output standard. In particolare, i metodi più usati sono print, println e printf.

public class OutputEsempio {
    public static void main(String[] args) {
        System.out.print("Senza newline");
        System.out.print(" continua sulla stessa riga");

        System.out.println();

        System.out.println("Con newline alla fine");

        String nome = "Alice";
        int eta = 30;
        double saldo = 1234.5678;

        System.out.printf("Nome: %s, Età: %d, Saldo: %.2f%n", nome, eta, saldo);
    }
}



Input da tastiera con Scanner in Java

Per leggere dati inseriti dall’utente tramite tastiera si utilizza spesso la classe Scanner, costruita a partire da System.in. Inoltre, è importante gestire gli errori di formato e chiudere correttamente le risorse.

import java.util.InputMismatchException;
import java.util.Scanner;

public class InputEsempio {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            System.out.print("Inserisci il tuo nome: ");
            String nome = scanner.nextLine();

            System.out.print("Inserisci la tua età: ");
            int eta = scanner.nextInt();

            System.out.println("Ciao " + nome + ", hai " + eta + " anni.");
        } catch (InputMismatchException e) {
            System.err.println("Formato età non valido. Inserisci un numero intero.");
        }
    }
}



Esempi pratici di sintassi Java

Dichiarazioni, espressioni e statement in Java

Una dichiarazione introduce una nuova variabile o metodo. Un’espressione, invece, produce un valore. Infine, uno statement è un’istruzione completa, spesso terminata dal punto e virgola.

public class EspressioniEStatement {
    public static void main(String[] args) {
        int a = 10;
        int b = 5;

        int c = a + b * 2;

        if (c > 15) {
            System.out.println("c è maggiore di 15");
        } else {
            System.out.println("c è minore o uguale a 15");
        }

        String risultato = (c % 2 == 0) ? "pari" : "dispari";
        System.out.println("c è " + risultato);
    }
}



Scope delle variabili in Java

Scope delle variabili in Java e blocchi

public class ScopeEsempio {

    private int field = 10;

    public void metodo() {
        int locale = 20;

        if (locale > 0) {
            int internoIf = 30;
            System.out.println(field + locale + internoIf);
        }

        // La variabile internoIf non è visibile qui
    }

    public void loops() {
        for (int i = 0; i < 3; i++) {
            int dentroFor = i * 2;
            System.out.println(dentroFor);
        }

        // Le variabili i e dentroFor non sono visibili fuori dal ciclo
    }
}



Esempio completo di sintassi Java

Il seguente programma mette insieme variabili, input, output, operatori e strutture di controllo per calcolare l’indice di massa corporea di un utente. In questo modo è possibile vedere all’opera tutti gli elementi della sintassi Java.

import java.util.Scanner;

public class CalcolatoreImc {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            System.out.print("Inserisci il peso in kg: ");
            double peso = scanner.nextDouble();

            System.out.print("Inserisci l'altezza in metri: ");
            double altezza = scanner.nextDouble();

            double imc = peso / (altezza * altezza);

            System.out.println("Il tuo IMC è: " + imc);

            if (imc < 18.5) {
                System.out.println("Sottopeso");
            } else if (imc < 25) {
                System.out.println("Normopeso");
            } else if (imc < 30) {
                System.out.println("Sovrappeso");
            } else {
                System.out.println("Obesità");
            }
        }
    }
}



Conclusione sulla sintassi Java e risorse correlate

In questa guida hai visto la struttura di base di un programma Java, come usare commenti, dichiarare variabili, lavorare con i tipi primitivi, utilizzare gli operatori e gestire input e output. In sintesi, questi sono i mattoni fondamentali su cui si costruiscono applicazioni reali.

Per continuare a studiare Java in modo strutturato puoi approfondire questi argomenti correlati sul sito:

Inoltre, con una buona padronanza della sintassi e delle convenzioni di base ti sarà molto più semplice comprendere framework, librerie e pattern avanzati del mondo Java.

Commenti

Lascia un commento