基本类型和引用类型的比较
基本类型与引用类型的 == 比较
基本类型(如 int、double)使用==比较时,直接比较数值是否相等。
引用类型(如 String、自定义类)使用==比较时,比较的是对象的内存地址是否相同。
Integer 的创建方式差异
Integer.valueOf()会使用缓存池(默认缓存 -128 到 127 的 Integer 对象),多次调用可能返回同一对象的引用。new Integer()每次都会创建新的对象,即使数值相同,地址也不同。
包装类与基本类型的 == 比较
包装类(如 Integer)与基本类型(如 int)用==比较时,包装类会自动拆箱为基本类型,直接比较数值。
包装类之间的值比较
包装类之间比较值时,应使用equals()方法,避免使用==(因==比较的是地址而非数值)。例如:
Integer a = 100; Integer b = 100; System.out.println(a == b); // true(缓存池作用) System.out.println(a.equals(b)); // true Integer c = 200; Integer d = 200; System.out.println(c == d); // false(超出缓存范围) System.out.println(c.equals(d)); // true