"Amigo, te invidiez. Să înveți lucruri noi este atât de minunat! Și astăzi te așteaptă un subiect nou și interesant - literalmente."

"Se pare că ar trebui să spun că sunt cel mai fericit robo-student de pe planetă, Rishi. Ei bine, sunt gata să absorb noile cunoștințe!"

„Să trecem la asta imediat. Literalele sunt date specifice scrise direct în codul unui program. Nu vorbim despre orice date. Vorbim doar despre tipuri primitive și șiruri.

De exemplu, să presupunem că aveți acest cod:

Cod Literale
int a = 5;
int b = a + 10;
String s = "Sum=" + (a + b);
5
10
"Sum="

„Literalele din acest cod sunt numărul 5 , numărul 10 și șirul „ Suma = ”.

Literale întregi

„În Java, totul, inclusiv literalele, are un tip. Toate literalele întregi (întregi) din cod sunt int . Tipul int este tipul întreg Java standard.”

"Cunosc acest tip. L-am folosit."

„Îți amintești și alte tipuri de numere întregi în afară de int? Unele care ocupă mai puțin spațiu în memorie?”

"Desigur! Octet și scurt."

„Acestea sunt cele. Deci, dacă în codul tău decideți să atribuiți un literal întreg unei variabile de tip octet sau scurt, nu vor fi probleme. Principalul lucru este că valoarea literală se află în intervalul de valori pe care tipul variabilei poate stoca. Compilatorul Java este suficient de inteligent pentru a înțelege că unei variabile octet i se poate atribui literalul întreg 100.

Exemple:

Cod Descriere
int a = 300;
Aceasta se va compila foarte bine.
byte a = 100; 
Aceasta se va compila foarte bine.
byte a = 300; 
Va apărea o eroare de compilare, deoarece valoarea maximă a octetilor este 127.

— Dar tipul lung ?

„Putem scrie și literale de acest tip în codul nostru. Pentru a face acest lucru, adăugați litera latină „L” sau „l” la sfârșitul numărului întreg.

Exemple:

Cod Descriere
long a = 3000000000L; 
Aceasta se va compila foarte bine.
long a = 3000000000; 
Eroare de compilare: 3 miliarde este prea mare pentru un literal int.
int a = 3000000000L; 
Eroare de compilare: literalul este un lung, dar variabila este un int. În plus, 3 miliarde este mai mult decât maximul int.

„Ați observat cât de dificil este să citiți numere mari de 10 sau mai multe cifre?

„Da, dacă nu ai robovision activat, atunci nu va fi imediat clar dacă vorbim despre 3 miliarde sau 30.”

„Pentru a face codul mai lizibil (și acest lucru este important!), Java permite inserarea liniuțelor de subliniere în literalele numerice (acestea nu afectează valoarea numărului).

„Exemplul de mai sus poate fi rescris cu caractere de subliniere pentru a fi puțin mai clar:

Cod Descriere
long a = 3_000_000_000L; 
Aceasta se va compila foarte bine.
long a = 3_000_000_000; 
Eroare de compilare: 3 miliarde este prea mare pentru un literal int.
int a = 3_000_000_000L; 
Eroare de compilare: literalul este un lung, dar variabila este un int. În plus, 3 miliarde este mai mult decât maximul int.

„Acest lucru este mult mai convenabil de citit, deși o virgulă în loc de un caracter de subliniere ar fi mai familiar!”

„Dar nu putem folosi virgulele în literalele numerice, deoarece sunt deja folosite în alt scop. De exemplu, pentru a separa argumentele unul de celălalt atunci când apelăm o metodă.

Literale cu numere reale

„Probabil ați ghicit deja că în codul dvs. puteți specifica nu numai numere întregi, ci și valori literale în virgulă mobilă (numere reale).”

— Atât dublele cât și flotanții?

„Da. De fapt, regula este destul de simplă: dacă un număr din cod are un punct zecimal în el, atunci numărul este un literal cu virgulă mobilă. Și nu orice literal, ci literal dublu. Pentru a crea un literal flotant , trebuie să trebuie să puneți litera „F” (sau „f”) la sfârșitul numărului .

Exemple:

Cod Descriere
double a = 100.0; 
Aceasta se va compila foarte bine.
double a = 100.;
Aceasta se va compila foarte bine.
double a = .0;
Aceasta se va compila foarte bine.
float a = 100.0f; 
Aceasta se va compila foarte bine.
float a = 100.0; 
Va exista o eroare de compilare: variabila este un float, dar literalul este un dublu.

„Apropo, puteți converti în mod explicit un literal întreg într-un literal flotant sau dublu, prin simpla adăugare a sufixului „F” (pentru float ) sau D (pentru dublu ). Exemple:

Cod Descriere
double a = 100D; 
Aceasta se va compila foarte bine.
float a = 100F; 
Aceasta se va compila foarte bine.
int a = 300D; 
Va exista o eroare de compilare: variabila este un int, dar literalul este un double .

„Literale în virgulă mobilă pot folosi notația științifică : în plus față de partea semnată a numărului, puteți specifica și o putere de zece. Exemplu:

Literal Notatie matematica Valoarea finală
1,23 E 2 1,23*10 2 123,0
1,23 E 3 1,23*103 1230,0
1,23 E -6 1,23*10 -6 0,00000123
1 E 6 1,0 *10 6 1000000,0
1 E -10 1,0*10 -10 0,0000000001

Literale șiruri

„De asemenea, puteți specifica linii întregi de text în codul dvs. Pentru a-i spune compilatorului să trateze un șir ca date (un literal) și nu ca parte a codului, întregul șir este înconjurat de ghilimele duble pe ambele părți.

„Dacă o singură linie de cod are mai multe ghilimele duble, atunci acestea sunt împărțite în perechi. Primele ghilimele duble indică începutul unui literal. Următorul indică sfârșitul literalului. Următorul după aceea marchează încă o dată începutul unui nou literal. Și următorul marchează sfârșitul celui de-al doilea literal. Și așa mai departe.

„Fiecare astfel de literal este un șir .

Exemple

Cod Explicaţie
"+"+"+"+"+"+"+"+"+"
Există 5 literale într-o linie. Fiecare dintre ele constă dintr-un singur caracter „+”.
""
Acest literal este un șir gol. Un șir fără caractere.
"2+3"+"-5"
Există două literale aici. Rezultatul va fi șirul „2+3-5”, nu un număr
"return"+";"
Există, de asemenea, două literale aici. Nu există nicio declarație de returnare aici.

„Dacă un șir literal este prea lung, acesta poate fi împărțit în mai multe linii și lipit împreună cu „operatorul plus”:

Cod Explicaţie
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.";
Dacă afișați această linie pe ecran, atunci tot textul va fi afișat pe o singură linie!

Litere de caractere

"Ce se întâmplă dacă am nevoie de un literal care este un singur caracter, mai degrabă decât un șir? Ar trebui să creez un șir care constă dintr-un singur caracter?"

"Nu, în acest caz aveți nevoie de un literal al cărui tip este char. Puteți ghici cum este desemnat începutul și sfârșitul unui astfel de literal?"

„Citale simple?”

„Da, iar în ghilimele simple trebuie să existe un caracter și doar un caracter. Nu poți folosi ghilimele simple goale.

Exemple:

Cod Explicaţie
'A'
Un literal al cărui tip este char. Conține litera latină „A”.
'@' 
Un literal al cărui tip este char. Conține simbolul „@”.
'' 
Un literal al cărui tip este char. Conține un caracter japonez. Și acest lucru este posibil.
'\u1f3a'
Un literal al cărui tip este char. Conține un caracter Unicode specificat de numărul său.

„Ultimul exemplu atribuie un caracter Unicode folosind o notație specială: mai întâi avem prefixul \u, urmat de 4 caractere hexazecimale. Veți afla mai multe despre acest lucru în lecțiile următoare.”