CodeGym /Corsi /JAVA 25 SELF /Numeri e caratteri in Java

Numeri e caratteri in Java

JAVA 25 SELF
Livello 6, Lezione 1
Disponibile

1. Quali tipi di numeri esistono?

In programmazione lavoriamo continuamente con i numeri — dall’età dell’utente al numero di stelle in una galassia o ai centesimi su un conto bancario. Ma compiti diversi richiedono tipi di numeri diversi: a volte è importante conservare solo numeri interi, a volte frazioni molto precise e talvolta servono numeri “senza meno”.

Numeri interi (int e altri)

Un numero intero è un numero senza parte frazionaria.
In Java si usa più spesso il tipo int, ma oltre a questo ce ne sono altri che differiscono per dimensione e intervallo.

  • int — il tipo principale per i numeri interi. Può contenere valori molto grandi (e piccoli) e non occupa molta memoria. Ad esempio, per contare i like, l’età, il numero di giorni in un anno quasi sempre si userà int.
  • long — si usa quando i valori possono essere molto grandi (per esempio miliardi o trilioni). Esempio: memorizzare il numero totale di visualizzazioni di YouTube nella sua storia.
  • short — un tipo parco di memoria ma poco usato. Utile dove ci sono molti piccoli valori simili (per esempio, dati audio, componenti di colore).
  • byte — per valori ancora più piccoli, soprattutto in grafica e nella gestione di file, dove è importante risparmiare memoria.

Numeri in virgola mobile (double, float)

Talvolta serve lavorare con numeri che hanno una parte frazionaria. Per esempio, la temperatura dell’aria, la media di uno studente, il prezzo di un prodotto con i centesimi.

  • double — è il tipo “predefinito” per memorizzare numeri in virgola mobile. Abbastanza preciso per la maggior parte dei calcoli (es.: 3.1415926535…).
  • float — più leggero e meno preciso, si incontra spesso nella grafica computazionale o nell’elaborazione di grandi insiemi di dati, dove è importante risparmiare memoria.

Tipi numerici speciali

  • BigInteger — quando serve lavorare con numeri enormi, oltre gli intervalli standard, ad esempio in crittografia o in calcoli astronomici.
  • BigDecimal — classe per calcoli precisi con numeri decimali (finanza, calcolo di percentuali), aiuta a evitare le imprecisioni tipiche di double e float.

2. Intervalli di valori

I tipi interi possono memorizzare sia numeri positivi sia negativi. È comodo quando i valori possono essere “sopra o sotto lo zero”: ad esempio temperatura, saldo del conto, altitudine rispetto al livello del mare.

Esempio:

  • int : -10, 0, 50
  • long : 0, 10, -1000_000_000_000_000_000L

Tipi interi

Tipo Dimensione Intervallo di valori Esempio d'uso
byte
1 byte da -128 a 127 -128, 0, 127
short
2 byte da -32 768 a 32 767 -1000, 0, 32000
int
4 byte da -2 147 483 648 a 2 147 483 647 -1000000, 0, 2000000
long
8 byte -9 223 372 036 854 775 808
a 9 223 372 036 854 775 807
-10_000_000_000, 1

Tipi a virgola mobile

Tipo Dimensione Esempi di valori Descrizione
float
4 byte 3.14f, -0.001f precisione singola (7 cifre)
double
8 byte 3.1415, -1.7E+308 doppia precisione (15-16 cifre)

3. Suffissi per i numeri

In alcune situazioni è necessario indicare esplicitamente quale tipo vuoi usare per un numero. Questo si fa mediante i suffissi:

  • L o l — per il tipo long (per esempio, 10000000000L)
  • F o f — per il tipo float (per esempio, 3.14f)
  • D o d — per il tipo double (di solito non serve, perché i numeri con la virgola senza suffisso sono double)

Se non specifichi un suffisso, per impostazione predefinita un numero intero è int, mentre un numero con la virgola è double. Ad esempio, 42 è int, e 3.14 è double.

A cosa serve? Ad esempio, per evitare un errore quando si assegna un numero grande a una variabile di tipo long:

long bigNumber = 9000000000L; // se si rimuove la L, ci sarà un errore di compilazione

Separatore con il trattino basso _

Quando i numeri sono lunghi, è facile confondersi con gli zeri. Per bellezza e leggibilità, in Java si possono usare trattini bassi (underscore) all'interno del numero.

int population = 146_700_000;
long stars = 100_000_000_000L;
Uso dei trattini bassi per rendere i numeri più leggibili

È perfettamente legale: il compilatore ignora gli underscore e a colpo d’occhio vedi subito gli ordini di grandezza. L’importante è non metterli all’inizio o alla fine, dopo il punto o prima del suffisso.

4. Tipo di carattere char: che cos’è e a cosa serve?

Il tipo char si usa per memorizzare un solo carattere: lettera, cifra, segno di punteggiatura, spazio, carattere speciale e perfino una faccina.

Esempi:

char letter = 'A';
char digit = '7';
char symbol = '?';
char cyrillic = '\u0416';
char euro = '€';
char smile = '☺'; // Sì, si può anche questo!

Regole importanti:

  • Un valore di tipo char si scrive tra apici singoli: 'A', '7', '#'.
  • È proprio un solo carattere! Se scrivi 'AB', il compilatore genererà un errore.
  • Ogni carattere ha un proprio codice numerico (Unicode).

Unicode: caratteri da tutto il mondo

Java usa lo standard Unicode, che permette di memorizzare non solo le lettere latine, ma anche il cirillico, gli ideogrammi, le emoji e perfino i geroglifici egizi (se mai servissero).

Curiosità:
Il tipo char è, in sostanza, un numero a 16 bit (da 0 a 65535), a ciascun valore corrisponde un carattere.

5. Caratteri e numeri: il legame tramite Unicode

Poiché internamente ogni carattere è un numero, possiamo convertire senza problemi char in int e viceversa.

Esempio: ottenere il codice Unicode di un carattere

public class CharToInt {
    public static void main(String[] args) {
        char ch = 'A';
        int code = ch; // conversione implicita char → int

        System.out.println("Codice del carattere '" + ch + "': " + code);
    }
}

Risultato:

Codice del carattere 'A': 65

E ora il contrario — ottenere il carattere a partire dal codice:

public class IntToChar {
    public static void main(String[] args) {
        int code = 1040; // Codice della lettera '\u0410' in Unicode (cirillico)
        char ch = (char) code; // Conversione esplicita int → char

        System.out.println("Carattere con codice " + code + ": " + ch);
    }
}

Risultato:

Carattere con codice 1040: \u0410

6. Tipi primitivi fondamentali di Java

Tipo Dimensione (bit) Intervallo di valori Esempio di valore Nota
byte
8 -128 ... 127 42 Molto raramente usato
short
16 -32,768 ... 32,767 12345 Per risparmiare memoria
int
32 -2,147,483,648 ... 2,147,483,647 1000000 Principale per i numeri interi
long
64 ≈ −9.22 × 1018 ... ≈ 9.22 × 1018 5000000000L Per interi molto grandi
float
32 ~±3.4 × 10-38 ... ±3.4 × 1038 3.14f Numeri in virgola mobile, bassa precisione
double
64 ~±1.7 × 10-308 ... ±1.7 × 10308 2.718 Numeri in virgola mobile, alta precisione
char
16 0 ... 65 535 (Unicode) '\u0416', 'A', '?' Un solo carattere
boolean
1 true, false true Valore booleano
1
Compito
JAVA 25 SELF, livello 6, lezione 1
Bloccato
Creazione dell'inventario per l'eroe RPG 🎮
Creazione dell'inventario per l'eroe RPG 🎮
1
Compito
JAVA 25 SELF, livello 6, lezione 1
Bloccato
Conteggio dei tesori nella tana del drago 🐉
Conteggio dei tesori nella tana del drago 🐉
1
Compito
JAVA 25 SELF, livello 6, lezione 1
Bloccato
Decifrazione delle rune antiche 🔮
Decifrazione delle rune antiche 🔮
1
Compito
JAVA 25 SELF, livello 6, lezione 1
Bloccato
Magia bidirezionale di caratteri e numeri ✨
Magia bidirezionale di caratteri e numeri ✨
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION