Sobes.tech
Junior

Cum se pot compara tipurile de date primitive între ele?

sobes.tech AI

Răspuns de la AI

Tipurile de date primitive în Java sunt comparate după valoarea lor folosind operatori de comparație:

  • == (egalitate)
  • != (diferit)
  • > (mai mare)
  • < (mai mic)
  • >= (mai mare sau egal)
  • <= (mai mic sau egal)
// Compararea numerelor întregi
int x = 10;
int y = 20;
boolean isEqual = (x == y); // false
boolean isGreater = (x > y); // false

// Compararea numerelor cu virgulă mobilă
double a = 3.14;
double b = 3.14;
boolean areEqualDoubles = (a == b); // true (pentru valori exacte)

// Compararea caracterelor
char c1 = 'A';
char c2 = 'B';
boolean isCLessThanC2 = (c1 < c2); // true

// Compararea tipului boolean
boolean flag1 = true;
boolean flag2 = false;
boolean areFlagsEqual = (flag1 == flag2); // false

Este important să reținem că, la compararea numerelor cu virgulă mobilă (float, double), utilizarea operatorului == poate fi inexactă din cauza modului în care sunt reprezentate numerele în memorie. În astfel de cazuri, pentru verificarea egalității aproximative, se compară valoarea absolută a diferenței cu o mică toleranță (epsilon).

double val1 = 0.1 + 0.2; // de fapt nu este exact 0.3 din cauza preciziei
double val2 = 0.3;
double epsilon = 1e-9; // Mică toleranță

// Metoda inexactă
boolean incorrectEquality = (val1 == val2); // poate fi false

// Metoda recomandată pentru compararea numerelor cu virgulă mobilă
boolean correctEquality = (Math.abs(val1 - val2) < epsilon); // true