Menu
Coddy logo textTech

Java Cheat Sheet

Ultimo aggiornamento

Hello World e struttura del programma

Ogni programma Java parte da un metodo main dentro una classe.

ElementoCodice
Dichiarazione della classepublic class Main { ... }
Punto di ingressopublic static void main(String[] args) { ... }
Stampare una rigaSystem.out.println("Hello, World!");
Stampare senza andare a capoSystem.out.print("text");
Leggere l'inputScanner sc = new Scanner(System.in);
Importare una classeimport java.util.ArrayList;
Commenti// line e /* block */

Tipi di dati

I tipi primitivi sono minuscoli; le loro classi wrapper hanno l'iniziale maiuscola.

TipoDescrizione
intIntero con segno a 32 bit
longIntero con segno a 64 bit
double / floatNumeri in virgola mobile
booleantrue o false
charSingolo carattere Unicode a 16 bit
byte / shortInteri a 8 bit / 16 bit
StringTesto immutabile (una classe, non un primitivo)
Integer, Double, BooleanClassi wrapper per i primitivi
varTipo locale dedotto (Java 10+)

Variabili

OperazioneSintassi
Dichiarare e inizializzareint x = 5;
Inferenza del tipo (locale)var name = "Ada";
Costantefinal double PI = 3.14159;
Concatenazione di stringheString s = "Hi " + name;
Convertire una stringa in intint n = Integer.parseInt("42");
Convertire un int in stringaString s = String.valueOf(42);
Stringa formattataString.format("%d items", n)

Operatori

Operatori aritmetici, di confronto, logici e di assegnazione.

OperatoreSignificato
+ - * / %Addizione, sottrazione, moltiplicazione, divisione, modulo
++ --Incremento / decremento
== !=Uguale / diverso (confronta i riferimenti per gli oggetti)
> < >= <=Confronti maggiore / minore
&& || !AND, OR, NOT logici (cortocircuito)
& | ^ ~AND, OR, XOR, NOT bit a bit
<< >> >>>Shift a sinistra, a destra con segno, a destra senza segno
+= -= *= /=Assegnazione composta
? :Ternario: x > 0 ? "pos" : "neg"
instanceofControllo di tipo: if (o instanceof String s)

Controllo del flusso

IstruzioneSintassi
If / elseif (x > 0) { ... } else { ... }
Istruzione switchswitch (n) { case 1: ...; break; default: ...; }
Espressione switchvar s = switch (n) { case 1 -> "one"; default -> "other"; };
Ciclo whilewhile (i < n) { ... }
Ciclo do-whiledo { ... } while (i < n);
Ciclo forfor (int i = 0; i < n; i++) { ... }
For avanzato (for-each)for (String item : list) { ... }
Break / continuebreak; esce da un ciclo, continue; passa all'iterazione successiva

Metodi delle stringhe

String è immutabile: ogni metodo restituisce una nuova stringa. Usa StringBuilder quando concateni dentro un ciclo.

MetodoCosa fa
s.length()Numero di caratteri
s.charAt(i)Carattere all'indice i
s.substring(a, b)Porzione da a (incluso) a b (escluso)
s.indexOf("x")Primo indice di una sottostringa, oppure -1
s.contains("x")true se la sottostringa è presente
s.replace("a", "b")Sostituire tutte le occorrenze
s.split(",")Dividere in un String[]
s.trim() / s.strip()Rimuovere gli spazi iniziali e finali
s.toUpperCase() / toLowerCase()Cambiare maiuscole e minuscole
s.equals(t) / equalsIgnoreCase(t)Confronto per valore (non ==)
s.startsWith("x") / endsWith("x")Verifica di prefisso / suffisso
String.join(",", list)Unire elementi con un separatore

Math e utility comuni

Helper statici di java.lang.Math e delle classi wrapper numeriche.

ChiamataRisultato
Math.max(a, b) / Math.min(a, b)Il maggiore / minore di due valori
Math.abs(x)Valore assoluto
Math.pow(x, y)x elevato a y (restituisce double)
Math.sqrt(x)Radice quadrata
Math.round(x) / floor / ceilArrotondare al più vicino / per difetto / per eccesso
Math.random()double casuale in [0.0, 1.0)
Integer.parseInt("42")Convertire una stringa in int
Integer.MAX_VALUE / MIN_VALUEint più grande / più piccolo
Arrays.sort(arr)Ordinare un array sul posto
Arrays.toString(arr)Contenuto dell'array in forma leggibile

Metodi

OperazioneSintassi
Definire un metodoint add(int a, int b) { return a + b; }
Nessun valore di ritornovoid greet() { ... }
Metodo staticostatic int square(int x) { return x * x; }
Metodo pubblicopublic String getName() { return name; }
Varargsint sum(int... nums) { ... }
Chiamare un metodoint r = add(2, 3);
Chiamare un metodo staticoMath.max(a, b);
Overloading dei metodiint max(int a, int b) e double max(double a, double b)

Classi e OOP

OperazioneSintassi
Definire una classepublic class Dog { ... }
Campoprivate String name;
Costruttorepublic Dog(String name) { this.name = name; }
Creare un oggettoDog d = new Dog("Rex");
Getter / setterpublic String getName() { return name; }
Ereditarietàclass Puppy extends Dog { ... }
Interfacciainterface Runnable { void run(); }
Implementare un'interfacciaclass Task implements Runnable { ... }
Sovrascrivere un metodo@Override public void speak() { ... }

Record, enum e Java moderno

Sintassi moderna e concisa (Java 14+) per contenitori di dati e insiemi fissi di valori.

FunzionalitàSintassi
Record (dati immutabili)record Point(int x, int y) {}
Usare un recordvar p = new Point(1, 2); p.x();
Enumenum Day { MON, TUE, WED }
Enum con valorienum Coin { PENNY(1), DIME(10); ... }
Blocco di testoString s = """\n multi\n line\n """;
Pattern matching con instanceofif (o instanceof String s) { s.length(); }
Pattern nello switch (Java 21)case Integer i -> ...; case String s -> ...;
Classe sealedsealed interface Shape permits Circle, Square {}

Collezioni

Collezioni generiche di java.util.

TipoUso ed esempio
ArrayList<T>Array dinamico: list.add(1); list.get(0); list.size();
HashMap<K, V>Chiave-valore: map.put("a", 1); map.get("a");
HashSet<T>Valori unici: set.add(5); set.contains(5);
LinkedList<T>Lista doppiamente collegata, utile come coda/deque
ArrayDeque<T>Pila/coda: dq.push(x); dq.pop();
Arrayint[] nums = {1, 2, 3};
Iterare una listafor (T x : list) { ... }
Iterare una mapfor (var e : map.entrySet()) { e.getKey(); e.getValue(); }

Stream e lambda

Pipeline in stile funzionale sulle collezioni (Java 8+).

OperazioneSintassi
Espressione lambdax -> x * 2
Creare uno streamlist.stream()
Filtrare.filter(n -> n > 0)
Mappare / trasformare.map(n -> n * 2)
Ordinare.sorted() oppure .sorted(Comparator.reverseOrder())
Ridurre / sommare.reduce(0, Integer::sum)
Contare / verificare.count(), .anyMatch(n -> n > 5)
Raccogliere in una lista.collect(Collectors.toList())
Per ogni elemento.forEach(System.out::println)

Schemi comuni (try/catch, generics)

SchemaSintassi
Try / catchtry { ... } catch (Exception e) { ... }
Catturare un'eccezione specificacatch (IOException e) { ... }
Finallyfinally { ... } viene sempre eseguito
Try-with-resourcestry (Scanner sc = new Scanner(...)) { ... }
Lanciare un'eccezionethrow new IllegalArgumentException("bad");
Classe genericaclass Box<T> { T value; }
Metodo generico<T> T first(List<T> list) { ... }
Tipo vincolato<T extends Number>

La sintassi, le collezioni e le operazioni sugli stream di Java che usi di più, in una sola pagina. Questa cheat sheet di Java è un riferimento rapido per scrivere in Java: tipi di dati, controllo del flusso, classi, le collezioni ArrayList/HashMap, la Streams API e gli schemi con eccezioni e generics che usi ogni giorno.

Tutto quello che trovi qui è Java standard (Java 8 e successivi) e si compila con javac. Copia quello che ti serve oppure prova qualsiasi frammento dal vivo nel playground Java, senza installare nessun JDK. Sei alle prime armi con il linguaggio? Il corso interattivo gratuito di Java di Coddy costruisce gli stessi concetti passo dopo passo.

Domande frequenti sulla cheat sheet di Java

Questa cheat sheet di Java è gratuita?
Sì. Questa cheat sheet di Java è completamente gratuita e non richiede registrazione. Salvala nei preferiti e torna quando devi controllare la sintassi, una collezione o un'operazione sugli stream.
Qual è la differenza tra == e .equals() in Java?
Per gli oggetti, == confronta i riferimenti, cioè se due variabili puntano esattamente allo stesso oggetto, mentre .equals() confronta il contenuto. Due oggetti String diversi con lo stesso testo sono .equals() ma potrebbero non essere ==. Usa sempre .equals() per confrontare stringhe e altri oggetti per valore; usa == solo per i primitivi (int, boolean, ecc.) o per controllare null.
A cosa servono gli stream in Java?
La Streams API (Java 8+) ti permette di elaborare le collezioni con una pipeline di operazioni leggibile, come filter, map, sorted, reduce e collect, invece di cicli scritti a mano. Parti da list.stream(), concateni le operazioni intermedie e chiudi con un'operazione terminale come collect(Collectors.toList()) o forEach. Così il codice che trasforma i dati resta conciso ed espressivo.
Posso esercitarmi con Java online?
Sì. Apri il playground Java per compilare ed eseguire nel browser qualsiasi frammento di questa cheat sheet, senza installare nessun JDK. Quando vuoi un percorso strutturato, il corso interattivo gratuito di Java di Coddy ti porta passo dopo passo da variabili e cicli fino a classi, collezioni e stream.
Questa cheat sheet va bene per chi inizia?
Sì. È organizzata dai mattoni più comuni (tipi, controllo del flusso, metodi) fino a quelli avanzati (stream, generics, eccezioni), così puoi usare le prime sezioni fin dal primo giorno e arrivare al resto con il tempo.
Come si converte una String in int in Java?
Usa Integer.parseInt("42") per ottenere un int primitivo, oppure Integer.valueOf("42") per ottenere un oggetto Integer. Entrambi lanciano una NumberFormatException se la stringa non è un numero valido, quindi racchiudili in un try / catch quando l'input non è affidabile. Per la conversione opposta usa String.valueOf(n) o Integer.toString(n).
Qual è la differenza tra ArrayList e array in Java?
Un array (int[] a = new int[5]) ha una lunghezza fissa decisa alla creazione e può contenere direttamente i primitivi. Un ArrayList<T> cresce e si riduce dinamicamente con add() e remove(), ma memorizza solo oggetti, quindi i primitivi vengono convertiti automaticamente con l'autoboxing (ArrayList<Integer>). Usa un array quando la dimensione è nota e fissa; usa un ArrayList quando la collezione cambia dimensione.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Java con Coddy

INIZIA