第一个打印的是true,第二个打印的是false 对Integer赋值,当值的范围在[-128,127]的时候不会生成新的对象。直接把缓存中的对对象拿来用 Integer c = 200; Integer d = 200; 这样就是false 了因为已经超过范围了就产生新的对象。 不信 你可以赋值127就是true 如果赋值是128就是false。 追问: 最后一个问题,放100的和放200的内存区域是不是不一样,一个在data segment,一个在堆内存,是不?可不可以说一下内存到底分几块,除了栈,堆,还有什么,分别放什么。 追加分数给你。 回答: 是的,它创建了新的对象,在新的内存地址就不一样。 内存: 栈、堆、池。