问题描述
public static void main(String[] args) {Integer a = 1;Integer b = 2;Integer c = 3;Integer d = 3;Integer e = 321;Integer f = 321;int ee = 321;int ff = 321;Long g = 3L;System.out.println(c==d);System.out.println(e==f);System.out.println(ee==ff);System.out.println(c==(a+b));System.out.println(c.equals(a+b));System.out.println(g==(a+b));System.out.println(g.equals(a+b));}结果:truefalsetruetruetruetruefalse 为什么会产生这样的结果呢,c、d相等,e、f不等这是为什么
解决方案
去看看源码就知道了,Java会缓存-128到127的Integer实例,那些是不会产生新的instance的。
时间: 2024-10-17 22:33:14