MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Tipuri de date

Una dintre principalele caracteristici ale Java este faptul că este un limbaj puternic tipizat. Aceasta înseamnă că fiecare variabilă și constantă reprezintă un anumit tip de date, iar acest tip este strict definit. Tipul de date determină intervalul valorilor pe care le poate stoca variabila sau constanta.

Să analizăm sistemul de tipuri de date de bază încorporate, utilizat pentru crearea variabilelor în Java. Acesta include următoarele tipuri:

  • boolean: stochează valoarea true sau false
boolean isActive = false;
boolean isAlive = true;
  • byte: stochează un număr întreg de la -128 la 127 și ocupă 1 byte
byte a = 3;
byte b = 8;
  • short: stochează un număr întreg de la -32768 la 32767 și ocupă 2 bytes
short a = 3;
short b = 8;
  • int: stochează un număr întreg de la -2147483648 la 2147483647 și ocupă 4 bytes
int a = 4;
int b = 9;
  • long: stochează un număr întreg de la –9 223 372 036 854 775 808 la 9 223 372 036 854 775 807 și ocupă 8 bytes
long a = 5;
long b = 10;
  • double: stochează un număr în virgulă mobilă de la ±4.9*10^-324 la ±1.7976931348623157*10^308 și ocupă 8 bytes
double x = 8.5;
double y = 2.7;

Ca separator între partea întreagă și partea fracționară a unui număr zecimal se folosește punctul.

  • float: stochează un număr în virgulă mobilă de la -3.4*10^38 la 3.4*10^38 și ocupă 4 bytes
float x = 8.5F;
float y = 2.7F;
  • char: stochează un singur caracter în codarea UTF-16 și ocupă 2 bytes, astfel încât intervalul valorilor stocate este de la 0 la 65535

O variabilă poate primi doar valori care corespund tipului său. Dacă o variabilă reprezintă un tip întreg, nu poate stoca valori în virgulă mobilă.

Numere întregi

Toate literalurile întregi, cum ar fi numerele 10, 4, -5, sunt considerate valori de tip int în Java. Totuși, putem atribui literaluri întregi și altor tipuri de date întregi precum byte, long, short. În acest caz, Java efectuează automat conversiile necesare:

byte a = 1;
short b = 2;
long c = 2121;

Dacă dorim să atribuim un număr foarte mare unei variabile de tip long, care depășește valorile permise pentru int, vom primi o eroare de compilare:

long num = 2147483649;

În acest caz, numărul 2147483649 este valabil pentru long, dar depășește limitele valorilor pentru int. Deoarece toate valorile întregi sunt considerate implicit de tip int, compilatorul va semnala o eroare. Pentru a rezolva problema, trebuie să adăugăm sufixul l sau L la număr, indicând că este de tip long:

long num = 2147483649L;

De obicei, valorile pentru variabilele întregi sunt date în sistemul zecimal, însă putem folosi și alte sisteme de numerație. De exemplu:

int num111 = 0x6F; // sistem hexazecimal, numărul 111
int num8 = 010;    // sistem octal, numărul 8
int num13 = 0b1101; // sistem binar, numărul 13

Pentru a specifica o valoare hexazecimală, se folosește prefixul 0x. Similar, pentru valori octale se folosește prefixul 0, iar pentru valori binare prefixul 0b.

Numerele întregi permit, de asemenea, separarea cifrelor cu ajutorul caracterului de subliniere:

int x = 123_456;
int y = 234_567__789;
System.out.println(x);  // 123456
System.out.println(y);  // 234567789

Numere în virgulă mobilă

Când atribuim un literal în virgulă mobilă unei variabile de tip float, cum ar fi 3.1, 4.5 etc., Java consideră acest literal ca fiind de tip double. Pentru a indica faptul că valoarea trebuie tratată ca float, trebuie să folosim sufixul f:

float fl = 30.6f;
double db = 30.6;

Deși în acest caz ambele variabile au aproape aceeași valoare, ele vor fi tratate diferit și vor ocupa dimensiuni diferite în memorie.

Caractere și șiruri de caractere

O variabilă de tip char primește un singur caracter, încadrat între apostrofuri: char ch='e';. De asemenea, o variabilă de tip char poate primi o valoare întreagă între 0 și 65535. În acest caz, variabila va stoca un caracter, iar valoarea întreagă va indica poziția acestuia în tabelul de caractere Unicode (UTF-16). De exemplu:

char ch = 102; // caracterul 'f'
System.out.println(ch);

O altă formă de a specifica o valoare pentru o variabilă de tip char este folosirea formatului hexazecimal. De exemplu, char ch='\u0066'; va stoca tot caracterul 'f'.

Variabilele de tip char nu trebuie confundate cu variabilele de tip String. 'a' nu este identic cu "a". Variabilele de tip String reprezintă obiecte, spre deosebire de char sau int, care sunt tipuri primitive în Java:

String hello = "Hello...";
System.out.println(hello);

Pe lângă caracterele propriu-zise, care pot reprezenta litere, cifre sau semne de punctuație, există și secvențe speciale de caractere numite secvențe de control. De exemplu, cea mai utilizată este \n, care face trecerea pe următoarea linie. De exemplu:

String text = "Hello \nworld";
System.out.println(text);

Rezultatul acestui cod va fi:

Hello
world

În acest caz, secvența \n semnalează necesitatea trecerii la următoarea linie.

Începând cu versiunea 15, Java suportă blocuri de text (text blocks) - text pe mai multe linii, încadrat între triple ghilimele. Acestea sunt utile pentru scrierea ușoară a textului pe mai multe linii. De exemplu:

String text = """
               Acesta este un text
               pe mai multe linii
               fără a folosi concatenarea.
               """;
System.out.println(text);

Blocurile de text simplifică scrierea textului pe mai multe linii, fără a mai fi necesară concatenarea șirurilor sau utilizarea secvenței \n pentru trecerea la o linie nouă.

← Lecția anterioară Lecția următoare →