Comparações usando: == e .equals() entre tipos primitivos e Wrapper classes

 

Código This example produces the output:
Integer i1 = 128;

Integer i2 = 128;

if(i1 == i2) System.out.println(“same objects”);

if(i1 != i2) System.out.println(“different objects”);

if(i1.equals(i2)) System.out.println(“meaningfully equal”);

different objects

meaningfully equal

Integer i1 = 127;

Integer i2 = 127;

if(i1 == i2) System.out.println(“same objects”);

if(i1 != i2) System.out.println(“different objects”);

if(i1.equals(i2)) System.out.println(“meaningfully equal”);

 

In order to save memory, two instances of the following wrapper objects (created through boxing), will always be = = when their primitive values are the same:

same objects

meaningfully equal

Integer i1 = new Integer(127);

Integer i2 = new Integer(127);

if(i1 == i2) System.out.println(“same objects”);

if(i1 != i2) System.out.println(“different objects”);

if(i1.equals(i2)) System.out.println(“meaningfully equal”);

 

Neste são comparadas diferentes instâncias através do método equals:

i1 == i2 → false “different objects”

i1.equals(i2) → true “meaningfully equal”

different objects

meaningfully equal

Comparando primitivo com wrapper: O wrapper sempre será unwrapped para a comparação se dar primitivo com primitivo
Integer i1 = 128;

int i2 = 128;

if(i1 == i2) System.out.println(“same objects”);

if(i1 != i2) System.out.println(“different objects”);

if(i1.equals(i2)) System.out.println(“meaningfully equal”);

same objects

meaningfully equal

Integer i1 = 127;

int i2 = 127;

if(i1 == i2) System.out.println(“same objects”);

if(i1 != i2) System.out.println(“different objects”);

if(i1.equals(i2)) System.out.println(“meaningfully equal”);

 

Note: When = = is used to compare a primitive to a wrapper, the wrapper will be unwrapped and the comparison will be primitive to primitive.

same objects

meaningfully equal

Long i1 = new Long(548123848);

long i2 = 548123848;

if(i1 == i2) System.out.println(“same objects”);

if(i1 != i2) System.out.println(“different objects”);

if(i1.equals(i2)) System.out.println(“meaningfully equal”);

same objects

meaningfully equal

Float i1 = new Float(548123848.456841541);

float i2 = 548123848.456841541f;

if(i1 == i2) System.out.println(“same objects”);

if(i1 != i2) System.out.println(“different objects”);

if(i1.equals(i2)) System.out.println(“meaningfully equal”);

same objects

meaningfully equal

Boolean i1 = true;

Boolean i2 = true;

if(i1 == i2) System.out.println(“same objects”);

if(i1 != i2) System.out.println(“different objects”);

if(i1.equals(i2)) System.out.println(“meaningfully equal”);

same objects

meaningfully equal

Boolean i1 = true;

boolean i2 = true; // tipo primitivo

if(i1 == i2) System.out.println(“same objects”);

if(i1 != i2) System.out.println(“different objects”);

if(i1.equals(i2)) System.out.println(“meaningfully equal”);

same objects

meaningfully equal

Byte i1 = 127;

Byte i2 = 127;

if(i1 == i2) System.out.println(“same objects”);

if(i1 != i2) System.out.println(“different objects”);

if(i1.equals(i2)) System.out.println(“meaningfully equal”);

same objects

meaningfully equal

Character i1 = ‘\u007f’;

Character i2 = ‘\u007f’;

if(i1 == i2) System.out.println(“same objects”);

if(i1 != i2) System.out.println(“different objects”);

if(i1.equals(i2)) System.out.println(“meaningfully equal”);

same objects

meaningfully equal

Long s = 7L;

System.out.println(s.equals(7));

 

[…]for all the wrapper classes, two objects are equal (equals()) if they are of the same type and have the same value. It shouldn’t be surprising that

false

// O literal 7 é um int. Já a variável é um Long

Short s = 7;

System.out.println(s.equals(7));

false

// O literal 7 é um int. Já a variável é um Short

 

Esta entrada foi publicada em Java com as etiquetas . ligação permanente.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s