Sobes.tech
Junior

Como é que se podem comparar tipos de dados primitivos entre si?

sobes.tech IA

Resposta da IA

Os tipos de dados primitivos em Java são comparados pelo seu valor usando operadores de comparação:

  • == (igualdade)
  • != (diferença)
  • > (maior)
  • < (menor)
  • >= (maior ou igual)
  • <= (menor ou igual)
// Comparação de números inteiros
int x = 10;
int y = 20;
boolean isEqual = (x == y); // false
boolean isGreater = (x > y); // false

// Comparação de números de ponto flutuante
double a = 3.14;
double b = 3.14;
boolean areEqualDoubles = (a == b); // true (para valores exatos)

// Comparação de caracteres
char c1 = 'A';
char c2 = 'B';
boolean isCLessThanC2 = (c1 < c2); // true

// Comparação do tipo boolean
boolean flag1 = true;
boolean flag2 = false;
boolean areFlagsEqual = (flag1 == flag2); // false

É importante lembrar que ao comparar números de ponto flutuante (float, double), a comparação direta com == pode ser imprecisa devido às características de representação dos números na memória. Nesses casos, para verificar a igualdade aproximada, usa-se a comparação do valor absoluto da diferença com uma pequena tolerância (épsilon).

double val1 = 0.1 + 0.2; // na verdade não é exatamente 0.3 devido à precisão
double val2 = 0.3;
double epsilon = 1e-9; // Pequena tolerância

// Método impreciso
boolean incorrectEquality = (val1 == val2); // pode ser false

// Método recomendado para comparar números de ponto flutuante
boolean correctEquality = (Math.abs(val1 - val2) < epsilon); // true