I am new to java. I know somewhat about the wrapper classes and primitive datatypes, but what I have come across is surprising. On changing the values of the variables i and j from 1000 to 100, the output changes from false to true. I need to know the mechanism behind this.
class Demo{
    public static void main(String[] args){
        Integer i=1000,j=1000;
        if(i==j)
            System.out.println("true");
        else
            System.out.println("false");
    }
}
the above code gives me "false" while..
class Demo{
    public static void main(String[] args){
        Integer i=100,j=100;
        if(i==j)
            System.out.println("true");
        else
            System.out.println("false");
    }
}
the above code give me "true"
 
     
     
     
     
    