Questa scheda raccoglie, in forma sintetica, le principali costruzioni sintattiche del linguaggio Java.

Indice della grammatica

  • Commenti
  • Letterali
  • Dichiarazioni di variabili
  • Assegnamento
  • Operatori
  • Oggetti
  • Array
  • Cicli e istruzioni condizionali
  • Definizioni di classi
  • Metodi e costruttori
  • Package, interfacce e import
  • Eccezioni e controlli

Commenti

/* this is a multiline comment */
// this is a single-line comment
/** Javadoc comment */

Letterali

| Sintassi | Significato | | --- | --- | | number | Tipo int | | number[l \| L] | Tipo long | | 0xhex | Intero esadecimale | | 0Xhex | Intero esadecimale | | 0octal | Intero ottale | | [number].number | Tipo double | | number[f \| F] | Tipo float | | number[d \| D] | Tipo double | | [+ \| -] number | Numero con segno | | number e number | Esponente | | number E number | Esponente | | 'character' | Singolo carattere | | "characters" | Stringa | | "" | Stringa vuota | | \b | Backspace | | \t | Tabulazione | | \n | Avanzamento riga | | \f | Avanzamento pagina | | \r | Ritorno carrello | | \" | Virgolette doppie | | \' | Virgoletta singola | | \\ | Backslash | | \uNNNN | Escape Unicode (NNNN è esadecimale) | | true | Booleano | | false | Booleano |

Dichiarazioni di variabili

| Sintassi | Significato | | --- | --- | | [byte \| short \| int \| long] varname | Interi | | [float \| double] varname | Numeri in virgola mobile | | char varname | Caratteri | | boolean varname | Booleani | | classname varname | Tipi classe | | interfacename varname | Tipi interfaccia | | type varname1, varname2, varname3 | Variabili multiple | | [static] variableDeclaration | Variabile di classe | | [final] variableDeclaration | Costante | | [public \| private \| protected] variableDeclaration | Controllo di accesso | | [volatile] varname | Modificata in modo asincrono | | [transient] varname | Non persistente |

Le ultime cinque opzioni si applicano soltanto alle variabili di istanza e di classe.

Assegnamento

| Sintassi | Significato | | --- | --- | | variable = value | Assegnamento | | variable++ | Incremento postfisso | | ++variable | Incremento prefisso | | variable-- | Decremento postfisso | | --variable | Decremento prefisso | | variable += value | Somma e assegna | | variable -= value | Sottrae e assegna | | variable *= value | Moltiplica e assegna | | variable /= value | Divide e assegna | | variable %= value | Modulo e assegna | | variable &= value | AND e assegna | | variable \|= value | OR e assegna | | variable ^= value | XOR e assegna | | variable <<= value | Shift a sinistra e assegna | | variable >>= value | Shift a destra e assegna | | variable >>>= value | Shift a destra senza segno e assegna |

Operatori

| Sintassi | Significato | | --- | --- | | arg + arg | Addizione | | arg - arg | Sottrazione | | arg * arg | Moltiplicazione | | arg / arg | Divisione | | arg % arg | Modulo | | arg < arg | Minore di | | arg > arg | Maggiore di | | arg <= arg | Minore o uguale | | arg >= arg | Maggiore o uguale | | arg == arg | Uguale | | arg != arg | Diverso | | arg && arg | AND logico | | arg \|\| arg | OR logico | | !arg | NOT logico | | arg & arg | AND sui bit | | arg \| arg | OR sui bit | | arg ^ arg | XOR sui bit | | arg << arg | Shift a sinistra | | arg >> arg | Shift a destra | | arg >>> arg | Shift a destra senza segno | | ~arg | Complemento | | (type)thing | Cast | | arg instanceof class | Verifica dell'istanza | | test ? trueOp : falseOp | Operatore ternario |

Oggetti

| Sintassi | Significato | | --- | --- | | new class() | Crea una nuova istanza | | new class(args...) | Crea una nuova istanza con parametri | | object.variable | Variabile di istanza | | object.classvar | Variabile di classe | | object.method() | Metodo di istanza senza argomenti | | object.method(args...) | Metodo di istanza | | object.classmethod() | Metodo di classe senza argomenti | | object.classmethod(args...) | Metodo di classe | | Class.classmethod() | Metodo di classe senza argomenti | | Class.classmethod(args...) | Metodo di classe |

Array

| Sintassi | Significato | | --- | --- | | type varname[] | Dichiarazione di un array | | type[] varname | Dichiarazione alternativa | | new type[numElements] | Crea un nuovo array | | array[index] | Accede a un elemento | | array.length | Numero di elementi |

Cicli e istruzioni condizionali

| Sintassi | Significato | | --- | --- | | if (test) block | Condizione | | if (test) block else block | Condizione con alternativa | | switch (test) { case value: statements; ... default: statement; } | Selezione multipla | | for (initializer; test; change) block | Ciclo for | | while (test) block | Ciclo while | | do block while (test) | Ciclo do-while | | break [label] | Interrompe il ciclo | | continue [label] | Continua il ciclo | | label: | Etichetta |

Definizioni di classi

| Sintassi | Significato | | --- | --- | | class classname block | Definizione di una classe | | [final] class classname block | Classe non estendibile | | [abstract] class classname block | Classe astratta | | [public] class classname block | Classe pubblica | | class classname [extends Superclass] block | Estensione di una classe | | class classname [implements interfaces] block | Implementazione di interfacce |

Metodi e costruttori

| Sintassi | Significato | | --- | --- | | returnType methodName() block | Metodo senza parametri | | returnType methodName(parameters...) block | Metodo con parametri | | [abstract] returnType methodName() block | Metodo astratto | | [static] returnType methodName() block | Metodo di classe | | [native] returnType methodName() block | Metodo nativo | | [final] returnType methodName() block | Metodo non ridefinibile | | [synchronized] returnType methodName() block | Metodo sincronizzato | | [public \| private \| protected] returnType methodName() block | Controllo di accesso | | super.methodName() | Metodo della superclasse | | classname() block | Costruttore senza parametri | | classname(parameters...) block | Costruttore con parametri | | [public \| private \| protected] classname() block | Controllo di accesso del costruttore | | this(...) | Invoca un altro costruttore della classe | | super(...) | Invoca il costruttore della superclasse |

Package, interfacce e import

| Sintassi | Significato | | --- | --- | | import package.className | Importa una classe | | import package.* | Importa un package | | package packagename | Dichiara il package | | [public] interface interfaceName block | Definisce un'interfaccia | | interface interfaceName [extends anotherInterface] block | Estende un'interfaccia |

Eccezioni e controlli

| Sintassi | Significato | | --- | --- | | synchronized (object) block | Blocco sincronizzato | | try block catch (exception) block [finally block] | Gestione di un'eccezione con blocco finally opzionale | | try block [catch (exception) block] finally block | Gestione con blocco finally obbligatorio |

Riferimenti bibliografici

  • 1. *The Java Language Specification*, disponibile sul sito FTP di JavaSoft:
  • [ftp://ftp.javasoft.com/docs/specs](ftp://ftp.javasoft.com/docs/specs)

2. L. Lemay e C. L. Perkins, Teach Yourself Java in 21 Days, SAMS.NET Publishing (edito in Italia da Apogeo).