Java Integer Caching Gotcha: == vs equals()

🚨 Java Mystery That Breaks Your Brain 🧠💥 What will be the output of this code? public class Mystery { public static void main(String[] args) { Integer a = 100; Integer b = 100; Integer c = 200; Integer d = 200; System.out.println(a == b); System.out.println(c == d); } } Think carefully… it’s not as simple as it looks 👀 👇 👇 👇 Output: true false Wait… what? Same values but different results😵💫? Here’s the catch 👇 Java caches Integer values only in the range -128 to 127. So when you write: Integer a = 100; Integer b = 100; Both variables actually point to the same object in memory → that’s why it returns true. But when you write: Integer c = 200; Integer d = 200; These values are outside the cache range, so Java creates two different objects → that’s why it returns false. The real trap here is: 👉 == compares references (memory location) 👉 .equals() compares actual values This small difference can easily confuse you in interviews or even in real projects. Pro tip: Avoid using == with wrapper classes unless you clearly understand what’s happening behind the scenes. Did you get it right? Be honest 👇 And share this with someone preparing for Java interviews 😉 #Java #CodingChallenge #InterviewPrep #Developers #Programming #Tech

  • No alternative text description for this image

Its just roles of java that each datatype hold different size of bits , the more bits the more you store values inside that , for the example you give , use wrapper class Integer which is autoboxing of primitive int , and == in java check values inside two data members . To find values is equal or not you can use .equals() , == mainly use for primitive type , .equals need reference type to work because it is predfine method in java

Like
Reply

To view or add a comment, sign in

Explore content categories