关于Integer的比较大小问题即到底是用“==”还是“equals”来比较大小

时间:2021-11-27 16:18:35
今天上班做项目的时候,经理说凡是 Integer 的类型的整数在比较大小的时候都用"equals.()",不能用"==",即是前者可能在性能上稍逊于后者,但是用后者的话存在bug的可能性,当时自己就一头雾水了,后来查了一下源码才知道,当Ingeter类型的整数在-128到127的范围时,在比较大小的时候直接用的int原始数据类型,所以这个时候无论用 '' equals.() " 还是 " == " 都会返回true(当然前提是两个比较大小的数在数值上要相等),但是超出这个范围(-128~127)之后在比较大小的时候是返回一个新的Integer对象的,这个时候两个要比较大小的数在数值上 虽然大小相等,但是不是同一个对象,所以在比较时,用"=="会返回莫名其妙让你摸不着头脑的"false",所以如果你期望返回的是"true",那就请用"equals.()"来比较大小吧,(如果你只希望比较这两个数的数值大小,而不考虑是否同属一个对象),这就是我今天上班的总结,也希望在日后的项目中能起到借鉴作用....