Skip to content

Instantly share code, notes, and snippets.

@javagrails
Last active December 22, 2015 03:39
Show Gist options
  • Save javagrails/fe1b15e96e1a0d0f2419 to your computer and use it in GitHub Desktop.
Save javagrails/fe1b15e96e1a0d0f2419 to your computer and use it in GitHub Desktop.
Java Integer Behaviour magic or bug? (not it's not bug) or you can give a name .... But it's a fine manage of JAVA architACT
public class JavaIntegerBehave {
public static void main(String[] args) {
Integer i= new Integer(10);
Integer j= new Integer(10);
System.out.println("R1: "+(i==j)); // false
Integer k= 10;//new Integer(10);
Integer l = 10;//new Integer(10);
System.out.println("R2: "+(k==l)); // true ---- WHY ?
Integer m= new Integer(1000);
Integer n= new Integer(1000);
System.out.println("R3: "+(m==n)); // false
Integer o= 1000;//new Integer(1000);
Integer p= 1000;//new Integer(1000);
System.out.println("R4: "+(o==p)); //false ---- WHY ?
System.out.println("");
System.out.println("Actually the case happen upto 127 I found By Print");
System.out.println("SPECIAL_CASE_127");
Integer s= new Integer(127);
Integer t= new Integer(127);
System.out.println("SR1_127: "+(s==t)); // false
Integer u= 127;//new Integer(127);
Integer v= 127;//new Integer(127);
System.out.println("SR2_127: "+(u==v)); // true
System.out.println("SPECIAL_CASE_128");
Integer w= new Integer(128);
Integer x= new Integer(128);
System.out.println("SR1_128: "+(w==x)); // false
Integer y= 128;//new Integer(128);
Integer z= 128;//new Integer(128);
System.out.println("SR2_128: "+(y==z)); // false
System.out.println("");
System.out.println("ANOTHER_MAGIC_MAIRALA");
Integer f= new Integer(10);
Integer g= new Integer(10);
System.out.println("MR1:: F: "+f+" G: "+g);
System.out.println("MR1: "+(f==g)); // false ... OK IT IS FALSE BUT ??
f++;
g++;
System.out.println("MR2:: F: "+f+" G: "+g);
System.out.println("MR1: "+(f==g)); // true (how??)... CAN YOU IMAGINE ?? but it Created By new operator
/*
R1: false
R2: true
R3: false
R4: false
Actually the case happen upto 127 I found By Print
SPECIAL_CASE_127
SR1_127: false
SR2_127: true
SPECIAL_CASE_128
SR1_128: false
SR2_128: false
ANOTHER_MAGIC_MAIRALA
MR1:: F: 10 G: 10
MR1: false
MR2:: F: 11 G: 11
MR1: true
*/
// I got all these facts happen because of [ IntegerCache private static class ] in Integer.java file
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment