
Ce sunt tipurile de date primitive în Java? Probabil știi deja că aproape tot ce „mișcă” în Java e obiect, Java fiind un limbaj „născut” în paradigma OOP (Object-Oriented Programming).
Ei bine, până să ajungi la OOP, ca începător, vei întâlni peste tot tipuri de date primitive, adică niște elemente care stau la baza oricărui limbaj de programare. Ce fel de elemente? Numere și caractere.
În spațiul STEM (Science, Technology, Engineering, Math), numerele și caracterele reprezintă „obiectul muncii”.
Tipurile de date primitive în Java sunt uzuale și ușor de folosit. Practic, când te obișnuiești cu un lucru care înainte ți s-a părut greu, totul devine ușor, nu-i așa?
Tipuri de date primitive în Java 🔗
Sunt 8 tipuri de date primitive în Java.
Trebuie să știi că ele sunt predefinite, iar numele lor reprezintă un cuvânt cheie în limbajul Java, ceea ce le fac destul de importante.
Tipurile de date primitive se află printre pilonii de bază în sintaxa limbajului Java.
- byte: poate lua valori în intervalul [-128, 127], are o memorie de 8-biți (1 byte);
- short: ia valori în intervalul [-32.768, 32.767], are o memorie de 16-biți (2 bytes);
- int: poate lua valori în intervalul [-231, 231-1], are o memorie de 32-biți (4 bytes);
- long: ia valori în intervalul [-263, 263-1], are o memorie de 64-biți (8 bytes);
- float: are o precizie de 6 sau 7 zecimale, cu o memorie de 32-biți (4 bytes);
- double: are o precizie de până la 15 sau 16 zecimale, cu o memorie de 64-biți (8 bytes);
- boolean: poate avea valorile true (1) sau false (0);
- char: ia valori în intervalul [0, 65.535], are o memorie de 16-biți (2 bytes).
Pe majoritatea le-ai întâlnit în articolul „Tipul unei variabile în Java”.
Știai că nu este neapărat să inițializezi variabila cu o valoare la declarare? Îți recomand să citești articolele „Cum inițializezi o variabilă?” și „Cum declari o variabilă?”.
Valorile tipurilor de date primitive, în cazul în care nu le inițializezi:
- byte: 0
- short: 0
- int: 0
- long: 0L (se poate pune „l” sau „L”)
- float: 0.0F (se poate pune „f” sau „F”)
- double: 0.0D (se poate pune „d” sau „D”, dar fiind un tip de date implicit, nu e nevoie să se pună litera la finalul numărului)
- boolean: false
- char: ‘\u0000’ (caracterul zero în format Unicode)
Trebuie să fii atent pentru că aceste valori predefinite se dau „variabilelor de clasă” (globale), nu și variabilelor locale.
În Java (și în alte N limbaje de programare), valoarea unei variabile se numește „literal”.
Acest „literal” e specific pentru tipul de date ales la declararea variabilei.
De exemplu, dacă declar variabila altNumar de tipul int (int altNumar) și îi atribui valoarea 10 (int altNumar = 10;), numărul 10 reprezintă „literalul” de tipul int pentru variabila altNumar. Practic, un „literal” reprezintă valoarea variabilei. Un alt exemplu este atribuirea literei ‘Z’ unei variabile de tipul char (char altaLitera = ‘Z’;).
„Literali” pentru tipurile de date primitive 🔗
byte byteNumber = 8; // 8 este un „literal” de tipul byte
short shortNumber = 99; // 99 este un „literal” de tipul short
int integerNumber = 987; // 987 este un „literal” de tipul int
long longNumber = 123456789L; // 123456789L este un „literal” de tipul long
float floatNumber = 1.23F; // 1.23F este un „literal” de tipul float
double doubleNumber = 1.23456789; // 1.23456789 este un „literal” de tipul double
boolean booleanValue = false; // false este un „literal” de tipul boolean
char charValue = 'A'; // A este un „literal” de tipul char
Dacă vrei, pentru o mai bună organizare, poți să împarți tipurile de date primitive din Java în 3 categorii sau tipuri, și anume:
- Tip numeric: byte, short, int, long, float, double
- Tip de caractere: char
- Tip logic: boolean
Hai să mai scriu câteva exemple pentru cele mai cunoscute tipuri de date.
„Literali” de tipul int 🔗
Un număr care are la final litera „l” sau „L” este un „literal” de tipul long. Este recomandat să se folosească „L”, deoarece „l” poate fi confundat foarte ușor cu cifra 1. Dacă un număr nu are zecimale, atunci este un „literal” de tipul int.
Variabilele de tipul byte, short, int și long, pot fi definite cu literali de tipul int. Doar numerele care nu sunt în intervalul [-231, 231-1] intră în sfera „literalilor” de tipul long.
„Literalii” de tipul int pot fi numere în baza:
- zecimală: folosind cifrele de la 0 la 9;
- hexazecimală: folosind cifrele de la 0 la 9, dar și literele de la „A” la „F” (sau de la „a” la „f”) pentru reprezentarea numerelor de la 10 la 15;
- binară: folosind cifrele 0 și 1.
Exemple:
int decimalNumber = 30; // număr zecimal
int hexaNumber = 0X1E; /* numărul 30 în format hexazecimal; se pune 0x sau 0X în fața numărului*/
int binaryNumber= 0b10101010; /* numărul 30 în format binar; se pune 0b sau 0B în fața numărului*/
„Literali” de tipul numerelor întregi reale 🔗
Un număr cu zecimale este de tipul float dacă la final are litera „f” sau „F”.
Dacă are la final litera „d” sau „D”, este de tipul double. În caz că nu are vreo literă la final, se consideră a fi din oficiu de tipul double.
De asemenea, numerele cu zecimale se pot exprima folosind notația științifică, cu litera „e” sau „E”, care se pune înaintea cifrei ce reprezintă puterea lui 10.
Exemple:
double doubleNormal = 3.14;
double doublePoliticallyCorrect = 3.14D; // reprezentare cu litera „D” la final
float floatNormal = 1.2345F; // tipul float - „F” la final
float scientificNumber = 123.45e2; // reprezentare științifică; e2 înseamnă 10 la puterea a 2-a
„Literali” de tipul char 🔗
Tipul char poate ține (sau stoca) un singur caracter între ghilimele simple.
„Literalii” specifici pentru tipul char pot fi de 2 tipuri:
- format normal: ‘A’, ‘B’, ‘C’;
- format Unicode: ‘\u0041’, ‘\u0042’, ‘\u0043’.
„Literali” de tipul boolean 🔗
Există doar două valori: true, false.
Atât.
Bonus 🔗
Mai sunt și alte 2 tipuri de „literali”, dar care n-au legătură cu tipurile de date primitive în Java. Ele sunt:
- „literali” de tipul String: orice caractere introduse între ghilimele duble;
- „literalul” null: are valoarea null, dar n-are niciun efect. Se folosește la lucruri un pic mai complicate… la clase…
Mă gândesc să mai scriu ceva. Ce anume? Dacă tot cunosc structura limbajelor C (C și C++), vreau să las și tipurile de date primitive din limbajul C, cu tot cu modificatorii de tip.
Apropo, știai că limbajul Java a fost conceput ca fiind concurentul limbajelor C/C++ și are la bază limbaje precum Cedar/Mesa, Eiffel, Objective C, SmallTallk?
Tipuri de date în limbajul C 🔗
Le enumăr fain-frumos și nimic mai mult. Deși sunt fan Java, îmi place să mă joc și cu alte limbaje de programare.
La ce ajută să știi atâtea limbaje? E la fel de util precum cunoașterea mai multor limbi străine. Baftă!
- char
- unsigned char
- signed char
- int
- unsigned int
- signed int
- short int
- unsigned int
- signed int
- long int
- unsigned long int
- signed long int
- float
- double
- long double
- _Bool (introdus în C99)
Concluzie 🔗
Cu ce trebuie să rămâi după ce ai citit acest articol? Cu tot!
Glumesc…
Nu glumesc…
Trebuie să înveți să fii profesionist!
Citește tot, testează-ți cunoștințele, recitește ce nu ți-e clar, lasă un comentariu dacă vrei să te ajut cu ceva și fă cumva să fii profesionist!
Limbajul Java este cu-adevărat unul de senzație! (Nicidecum nu e primitiv, din epoca de piatră…)
Învață să fii profesionist!