System.out.println(Integer.valueOf(300) == Integer.valueOf(300)); System.out.println(Integer.valueOf(3) == Integer.valueOf(3)); 运行结果 false,true 查看源文件 public static Integer valueOf(int i) { final int offset = 128; if (i >= -128 && i <= 127) { // must cache return IntegerCache.cache[i + offset]; } return new Integer(i); } Integer内部缓存了-128到127共256个Integer对象,valueOf如果在这个范围以内,返回的是同一个对象 如果不在这个范围以内,new一个返回。