"Amigo, ti invidio. Imparare cose nuove è così meraviglioso! E oggi ti aspetta un argomento nuovo e interessante - letterali."

"A quanto pare dovrei dire che sono lo studente-robo più felice del pianeta, Rishi. Bene, sono pronto ad assorbire le nuove conoscenze!"

"Andiamo subito al punto. I letterali sono dati specifici scritti direttamente nel codice di un programma. Non stiamo parlando di dati qualsiasi. Stiamo parlando solo di tipi primitivi e stringhe.

Ad esempio, supponiamo di avere questo codice:

Codice Letterali
int a = 5;
int b = a + 10;
String s = "Sum=" + (a + b);
5
10
"Sum="

"I letterali in questo codice sono il numero 5 , il numero 10 e la stringa ' Sum = '.

Letterali interi

"In Java, tutto, compresi i valori letterali, ha un tipo. Tutti i valori interi letterali (interi) nel codice sono ints . Il tipo int è il tipo intero Java standard."

"Conosco questo tipo. L'ho usato."

"Ricordi altri tipi interi oltre a int? Alcuni che occupano meno spazio in memoria?"

"Certo! Byte e breve."

"Quelli sono quelli. Quindi, se nel tuo codice decidi di assegnare un letterale intero a una variabile di tipo byte o short, non ci saranno problemi. L'importante è che il valore letterale rientri nell'intervallo di valori che il il tipo di variabile può memorizzare.Il compilatore Java è abbastanza intelligente da capire che a una variabile byte può essere assegnato il valore letterale intero 100.

Esempi:

Codice Descrizione
int a = 300;
Questo verrà compilato bene.
byte a = 100; 
Questo verrà compilato bene.
byte a = 300; 
Ci sarà un errore di compilazione, perché il valore massimo di byte è 127.

"E il tipo lungo ?"

"Possiamo anche scrivere letterali di questo tipo nel nostro codice. Per fare ciò, aggiungi la lettera latina 'L' o 'l' alla fine del numero intero.

Esempi:

Codice Descrizione
long a = 3000000000L; 
Questo verrà compilato bene.
long a = 3000000000; 
Errore di compilazione: 3 miliardi è troppo grande per un int letterale.
int a = 3000000000L; 
Errore di compilazione: il letterale è lungo, ma la variabile è un int. Inoltre, 3 miliardi è più del massimo int.

"Hai notato quanto sia difficile leggere grandi numeri di 10 o più cifre?

"Sì, se non hai abilitato il tuo robovision, allora non sarà immediatamente chiaro se stiamo parlando di 3 miliardi o 30."

"Per rendere il codice più leggibile (e questo è importante!), Java consente di inserire caratteri di sottolineatura in letterali numerici (non influiscono sul valore del numero).

"L'esempio sopra può essere riscritto con caratteri di sottolineatura per renderlo un po' più chiaro:

Codice Descrizione
long a = 3_000_000_000L; 
Questo verrà compilato bene.
long a = 3_000_000_000; 
Errore di compilazione: 3 miliardi è troppo grande per un int letterale.
int a = 3_000_000_000L; 
Errore di compilazione: il letterale è lungo, ma la variabile è un int. Inoltre, 3 miliardi è più del massimo int.

"Questo è molto più comodo da leggere, anche se una virgola invece di un trattino basso sarebbe più familiare!"

"Ma non possiamo usare le virgole nei valori letterali numerici perché sono già utilizzate per un altro scopo. Ad esempio, per separare gli argomenti l'uno dall'altro quando si chiama un metodo.

Numeri reali letterali

"Probabilmente hai già indovinato che nel tuo codice puoi specificare non solo numeri interi, ma anche valori letterali in virgola mobile (numeri reali)."

"Sia doppio che flottante?"

"Sì. In realtà, la regola è piuttosto semplice: se un numero nel codice contiene un punto decimale, allora il numero è un letterale in virgola mobile. E non un letterale qualsiasi, ma un letterale doppio. Per creare un letterale float , devi è necessario inserire la lettera 'F' (o 'f') alla fine del numero .

Esempi:

Codice Descrizione
double a = 100.0; 
Questo verrà compilato bene.
double a = 100.;
Questo verrà compilato bene.
double a = .0;
Questo verrà compilato bene.
float a = 100.0f; 
Questo verrà compilato bene.
float a = 100.0; 
Ci sarà un errore di compilazione: la variabile è un float, ma il letterale è un double.

"A proposito, puoi convertire in modo esplicito un letterale intero in un letterale float o double semplicemente aggiungendo il suffisso 'F' (per float ) o D (per double ). Esempi:

Codice Descrizione
double a = 100D; 
Questo verrà compilato bene.
float a = 100F; 
Questo verrà compilato bene.
int a = 300D; 
Ci sarà un errore di compilazione: la variabile è un int, ma il letterale è un double .

"I valori letterali in virgola mobile possono utilizzare la notazione scientifica : oltre alla parte del numero con segno, puoi anche specificare una potenza di dieci. Esempio:

Letterale Notazione matematica Valore finale
1.23 E 2 1,23*10 2 123,0
1.23 E 3 1,23*103 1230,0
1.23 Mi -6 1.23* 10-6 0,00000123
1 E 6 1,0*10 6 1000000.0
1 Mi -10 1.0* 10-10 0,0000000001

Letterali stringa

"Puoi anche specificare intere righe di testo nel tuo codice. Per dire al compilatore di trattare una stringa come dati (un letterale) e non come parte del codice, l'intera stringa è racchiusa tra virgolette doppie su entrambi i lati.

"Se una singola riga di codice ha più virgolette doppie, queste vengono divise in coppie. La prima virgoletta doppia indica l'inizio di un letterale. La successiva indica la fine del letterale. La successiva segna ancora una volta il inizio di un nuovo letterale e il successivo segna la fine del secondo letterale e così via.

"Ciascuno di questi letterali è un String .

Esempi

Codice Spiegazione
"+"+"+"+"+"+"+"+"+"
Ci sono 5 letterali in una riga. Ciascuno di essi è costituito da un singolo carattere '+'
""
Questo valore letterale è una stringa vuota. Una stringa senza caratteri.
"2+3"+"-5"
Ci sono due letterali qui. Il risultato sarà la stringa '2+3-5', non un numero
"return"+";"
Ci sono anche due letterali qui. Non c'è alcuna dichiarazione di ritorno qui.

"Se una stringa letterale è troppo lunga, può essere suddivisa in più righe e incollata insieme con l'operatore 'più':

Codice Spiegazione
String s = "I hold it true, whate'er befall"
         + "I feel it when I sorrow most;"
         + "'Tis better to have loved and lost"
         + "Than never to have loved at all.";
Se emetti questa riga sullo schermo, tutto il testo verrà visualizzato su un'unica riga!

Caratteri letterali

"Cosa succede se ho bisogno di un letterale che sia un singolo carattere piuttosto che una stringa? Devo creare una stringa composta da un singolo carattere?"

"No, in tal caso hai bisogno di un letterale il cui tipo sia char. Riesci a indovinare come sono designati l'inizio e la fine di tale letterale?"

"virgolette singole?"

"Sì, e dentro le virgolette singole deve esserci un carattere e un solo carattere. Non puoi usare virgolette singole vuote.

Esempi:

Codice Spiegazione
'A'
Valore letterale il cui tipo è char. Contiene la lettera latina 'A'.
'@' 
Valore letterale il cui tipo è char. Contiene il simbolo '@'
'' 
Valore letterale il cui tipo è char. Contiene un carattere giapponese. E anche questo è possibile.
'\u1f3a'
Valore letterale il cui tipo è char. Contiene un carattere Unicode specificato dal suo numero.

"L'ultimo esempio assegna un carattere Unicode utilizzando una notazione speciale: prima abbiamo il prefisso \u, seguito da 4 caratteri esadecimali. Imparerai di più su questo nelle prossime lezioni."