educative.io

Educative

Java Objects Creation

consider below code

import java.util.HashSet;

class Demonstration {

@SuppressWarnings("unchecked")  
public static void main( String args[] ) {
    
    HashSet<Celebrity> set = new HashSet();
    Celebrity realKardashian = new Celebrity(66, 17);
    Celebrity kardashianClone = new Celebrity(66, 17);
    set.add(realKardashian);

    if (set.contains(kardashianClone)) {
        System.out.println("Kim is a celebrity");
    } else {
        System.out.println("Can't find Kim");
    }

    //System.out.println(realKardashian.equals(kardashianClone)); 
    Integer i1 = new Integer(2);
    Integer i2 = new Integer(2);
    System.out.println(realKardashian.name == kardashianClone.name);      
    System.out.println(i1 == i2);      
    System.out.println(i1.hashCode() +" "+ i2.hashCode());      
}

}

class Celebrity {

Integer name;
int age;

public Celebrity(Integer name, int age) {
    this.name = name;
    this.age = age;
}

}

i1 == i2 prints false but realKardashian.name == kardashianClone.name prints true . why is so ? could you please help understand

Thanks


Type your question above this line.

Course: https://www.educative.io/collection/5307417243942912/5730192894984192
Lesson: https://www.educative.io/collection/page/5307417243942912/5730192894984192/5703274724327424

  • i1==i2 returns false because == checks for the same memory address, and as i1,i2 doesn’t have the same memory address that’s why it will return false.

  • realKardashian.name == kardashianClone.name returns true because we are comparing the name of realKardashian and kardashianClone object. However if we compare realKardashian== kardashianClone then it will return false.