为什么Java使用Integer类比较1000==1000为false而100==100为true?
2023-05-28 阅读 40
在Java中,对于Integer类型的对象,当它们的值在-128到127之间时,如果使用“==”运算符比较两个对象的值,会返回true,因为Java在内存中会维护一个Integer缓存池,对于这个范围内的整数,每个整数只会有一个对应的Integer对象。因此,当比较两个值在这个范围内的Integer对象时,实际上比较的是它们在缓存池中的引用,因此会返回true。
但是,当比较的值超出了这个范围时,Java会为每个值都创建一个新的Integer对象,这些对象在内存中的地址不同,因此使用“==”运算符比较时会返回false。因此,当比较1000和1000时,Java会为每个值创建一个新的Integer对象,因此使用“==”运算符比较时会返回false;而当比较100和100时,它们的值在-128到127之间,因此它们对应的Integer对象在缓存池中是同一个对象,使用“==”运算符比较时会返回true。
更新于 2023年05月30日