Tipuri de date în Java: tipuri de date primitive și non-primitive
Publicat: 2020-12-01Cuprins
Introducere
În orice limbaj de programare, un tip de date este o atribuire de date care permite computerului sau compilatorului să știe cum doresc programatorii să atribuie datele. Un tip de date adaugă o restricție variabilelor sau unei funcții în timp ce atribuie valori.
Aceste tipuri de date definesc comportamentul datelor, cum ar fi modul în care valorile acelui tip pot fi stocate și operațiunile care pot fi efectuate asupra datelor. Să aruncăm o privire la toate tipurile de date furnizate de java.
Tipuri de date primitive
Un tip de date primitiv nu poate fi împărțit în continuare într-un tip de date mai simplu. Java oferă 8 tipuri de date primitive, haideți să le explorăm!
octet
Un octet este un tip întreg care stochează numere întregi cuprinse între -128 și 127, acest lucru elimină problemele de constrângere a memoriei dacă aveți de-a face cu numere mici, deoarece necesită doar 1 octet de memorie. O variabilă octet poate fi declarată folosind cuvântul cheie „byte”. Atribuirea unei valori mai mari de 127 unui octet generează o eroare „tipuri incompatibile”.
octet n1 = 98 ; Sistem . afară . println(n1); |
Fragmentul de mai sus afișează 98 așa cum era de așteptat.
Mic de statura
Un scurt este un tip întreg care stochează numere întregi de la -32768 la 32767, consumă 2 octeți de memorie de pe disc. O variabilă scurtă poate fi declarată folosind cuvântul cheie „scurt”. Atribuirea unei valori mai mari de 32767 unei variabile scurte generează o eroare „tipuri incompatibile”.

scurt n1 = 9876 ; Sistem . afară . println(n1); |
Fragmentul de mai sus tipărește 9876 ca rezultat.
Int
Un int este un tip întreg care stochează numere întregi de la -2147483648 la 2147483647, consumă 4 octeți de memorie pe disc. În general, programatorii preferă mai mult să folosească un int pentru a declara o variabilă care stochează valori numerice. Compilatorul Java afișează o eroare „tipuri incompatibile” dacă încearcă să atribuie o valoare mai mare decât intervalul.
int n1 = 987654 ; Sistem . afară . println(n1); |
Fragmentul de mai sus tipărește 987654 ca rezultat.
Lung
Acum, acesta este un tip de date interesant care consumă 8 octeți de memorie pe disc. Este un tip întreg care stochează numere întregi care variază de la -9223372036854775808 la 9223372036854775807, uf, care necesită o perioadă considerabilă de timp pentru a citi acel interval.
Acesta este folosit atunci când tipul de date int depășește pentru operațiunile pe care le efectuăm. Amintiți-vă că trebuie să încheiem valoarea cu un „L” în timpul atribuirii.
lung n1 = 987654321098765L ; Sistem . afară . println(n1); |
Fragmentul de mai sus tipărește 987654321098765, așa cum era de așteptat.
Pluti
Float este un tip de date în virgulă mobilă, ceea ce înseamnă că poate stoca valorile, inclusiv precizia lor zecimală. Să presupunem că ați dezvoltat un cod pentru notarea tuturor cheltuielilor, dar sunteți destul de strict și doriți să urmăriți fiecare ban pe care l-ați cheltuit. În acest caz, int nu va face treaba deoarece int poate stoca doar numere întregi.
Avem nevoie de un tip de date în virgulă mobilă pentru această sarcină. Un float poate stoca numere fracționale de la 3.4e-038 la 3.4e+038, poate stoca până la 7 cifre de precizie zecimală. Amintiți-vă că ar trebui să încheiați valoarea cu un „f”.
float n = 98,76f ; Sistem . afară . println(n); |
Fragmentul de mai sus tipărește 98.76 ca rezultat.
Citiți: Proprietăți și beneficii JavaBeans: Cum ar trebui să utilizați?
Dubla
Double este similar cu float, dar, după cum spune și numele, este de două ori mai mare decât float în cazul preciziei zecimale. Poate avea o precizie zecimală de 15 cifre și poate stoca numere fracționale cuprinse între 1,7e-308 și 1,7e+308. Amintiți-vă că trebuie să încheiați valoarea cu un „d”.
Să parcurgem un cod pentru a înțelege diferența dintre float și double.
test de clasă publică { public static void main ( Argumente șir []) { float a1 = 1.f / 70 ; float b1 = 0 ; dublu a2 = 1.d / 70 ; dublu b2 = 0 ; float f1 = 1f ; dublu f2 = 1d ; pentru ( int i = 0 ;i < 490 ;i ++ ){ b1 = b1 + a1; b2 = b2 + a2; dacă (i > 1 && i <= 50 ){ f1 = f1 * i; f2 = f2 * i; } } Sistem . afară . println(b1); //linia 1 Sistem . afară . println(b2); //randul 2 Sistem . afară . println(f1); //linia 3 Sistem . afară . println(f2); //linia4 } } |
Calculul manual al expresiei „(1/70)*490” ne dă 7 ca răspuns, dar executând-o în java folosind float și double dă un răspuns diferit. În fragmentul de mai sus, o variabilă float și o variabilă dublă sunt inițializate cu 1/70, iar adăugarea acestei valori la o altă variabilă de 490 de ori ar trebui să ne dea 7 ca răspuns.

La rularea fragmentului de mai sus, linia 1 tipărește 6,9999795 care are o precizie zecimală de 7 cifre, în timp ce linia 2 tipărește 6,99999999999978 care are o precizie zecimală de 15 cifre. Deci, dacă float nu vă oferă o precizie zecimală exactă, atunci puteți opta pentru dublu. De asemenea, este mai probabil ca un float să atingă infinitul, deoarece intervalul de float este mai mic în comparație cu dublu.
De exemplu, dacă stocați factorial dintr-un număr considerabil de mare, atunci acea variabilă atinge infinitul. Din fragmentul de mai sus, putem vedea că există două variabile folosite pentru a stoca factorialul de 50 și în momentul în care tipărim rezultatul, linia 3 imprimă infinit, iar linia 4 imprimă 3.0414093201713376E64, deci dacă float nu corespunde valorii numerice. interval atunci puteți opta pentru dublu.
Atât float, cât și double pot fi folosite ca numere științifice cu un „e”, unde „e” reprezintă puterea lui 10. De exemplu, 3e2f este echivalent cu 300,0 în tipul de date float, iar 3e4d este echivalent cu 30000,0 în tipul de date dublu.
boolean
Un tip de date boolean poate lua doar două valori adevărat și fals, este declarat prin utilizarea cuvântului cheie boolean în java. Acest tip de date este folosit în general ca o variabilă de tip flag pentru a urmări modificările pe care le facem într-un cod. De exemplu, setarea steagului la adevărat dacă un număr este divizibil cu 2, altfel fals.
steag boolean = adevărat ; boolean b1 = fals ; Sistem . afară . println(steagul); //se afișează adevărat Sistem . afară . println(b1); //tipărește false |
Char
Un tip de date char este folosit pentru a stoca un singur caracter, acest tip de date poate fi declarat folosind cuvântul cheie char. Amintiți-vă că trebuie să includem caracterul între ghilimele simple în timpul atribuirii, acesta poate stoca atât litere mici, cât și litere mari într-un tip de date char.
Stocarea mai mult de un caracter într-un tip de date char generează o eroare. De asemenea, există un fapt distractiv în ceea ce privește tipul de date char, care este, tipărirea unui caracter într-un stoc întreg, valoarea ASCII a acelui caracter și viceversa este, de asemenea, adevărată.
char c1 = ' a ' ; char c2 = 66 ; Sistem . afară . println(c1); //linia 1 Sistem . afară . println(c2); //randul 2 Sistem . afară . println(( int )c1); //linia 3 |
În linia 1 a fragmentului de mai sus, tipărește „a” ca rezultat, ceea ce este așa cum era de așteptat. Linia 2 afișează „B” ca ieșire, deoarece 66 se referă la B în tabelul ASCII. Linia 3 afișează 97 ca ieșire, deoarece este valoarea ASCII a lui „a”.
Dar dacă vrem să stocăm mai mult de un caracter? Vom reveni la ele în paragrafele următoare.
Citește și: 17 idei și subiecte interesante de proiecte Java pentru începători
Tipuri de date non-primitive
Tipurile de date non-primitive în java sunt numite și tipuri de referință deoarece se referă la obiecte. Tipurile de date non-primitive sunt create de programator și nu sunt predefinite. Deoarece non-primitivele sunt denumite obiecte, acestea pot fi atribuite cu null, ceea ce nu este un caz în tipul primitiv.
Spre deosebire de tipurile de date primitive, un tip de date non-primitive trebuie să înceapă cu o literă mare. Toate tipurile de date non-primitive sunt de dimensiune egală și consumă memorie egală pe disc, care este diferită în cazul tipurilor de date primitive.
Şir
Un șir este un tip de date special în java, unde contrazice faptul că tipurile neprimitive sunt definite de programatori. Tipul de date șir este un tip de date non-primitiv, dar este predefinit în java, unii oameni îl numesc și un tip de date primitiv special al nouălea.
Acest lucru rezolvă cazul în care un caracter nu poate stoca mai multe caractere, un tip de date șir este folosit pentru a stoca secvența de caractere. Amintiți-vă că trebuie să includeți secvența de text între ghilimele duble.
String s1 = „ Hei acolo ” ; Sistem . afară . println(s1); |
Fragmentul de mai sus va tipări „Hey There” așa cum era de așteptat.
Matricele, clasele, interfețele etc. sunt câteva alte tipuri de date non-primitive în java.
Cum se calculează intervalul de tipuri de date?
După ce vizionați intervalele de tipuri de date primitive, este posibil să aveți îndoieli că trebuie să ne amintim acest lucru? Ei bine, răspunsul ar fi NU. Dar trebuie să ne amintim dimensiunea fiecărui tip de date și apoi putem calcula intervalul acelui tip de date.
De exemplu, un tip de date octet consumă 1 octet de memorie pe disc. La nivel de compilator, toate datele sunt stocate sub formă de biți și un octet are 8 biți. Acum unul dintre cei 8 biți este folosit pentru a specifica semnul numărului, iar cei 7 biți rămași pot stoca numărul real, astfel încât numărul maxim pe care îl putem stoca folosind 7 biți este 128.
Deci, -128 este limita inferioară a tipului de date octet și +127 este limita superioară, deoarece zero este primul număr de pe linia numerică după numerele negative.
În mod similar, în tipurile cu virgulă mobilă, datele sunt împărțite în 3 părți semnate bit, mantise și exponent. Partea Mantissa este folosită pentru a stoca precizia zecimală, un float are 23 de biți mantisă plus un bit ascuns și un dublu are 52 de biți mantisă plus un bit ascuns.
Pentru float, log(2^24)/log(10) care este aproximativ egal cu 7, deci precizie zecimală de 7 cifre.
Pentru dublu, log(2^53)/log(10) care este aproximativ egal cu 15, deci precizie zecimală de 15 cifre.

Înscrieți-vă la cursurile de inginerie software de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.
Concluzie
Am văzut diferite tipuri de date în java, înțelese tipuri de date primitive și non-primitive, diferența dintre primitive și non-primitive. Am parcurs exemple de fragmente de cod pentru a avea cunoștințe de bază despre declararea tipurilor de date.
A înțeles cum se calculează intervalul diferitelor tipuri de date de tipuri de date întregi, cum se calculează precizia zecimală a tipurilor de date în virgulă mobilă.
Acum că știți despre diferitele tipuri de date în Java, începeți să le explorați!
Dacă sunteți interesat să aflați mai multe despre Java, OOP și dezvoltarea de software full-stack, consultați programul Executive PG de la upGrad și IIIT-B în dezvoltarea de software Full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, Peste 9 proiecte și sarcini, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.
