今天在项目中遇到一个问题,将两个Long类型的对象用==比较,结果一样的值返回false。后来才反应过来,感觉这是个容易忽略的问题,所以总结一下。
像Long,Integer等都是基本类型的包装类,他们既是一个对象,但又有些特殊。
首先==比较两个对象比较的是他们本身的值,也就是指向的内存地址。所以一般情况下包装类不要用==比较大小。
但是呢前面也说了,包装类和一般对象有点不同。
例如两个Integer类型的对象比较大小:
这里可以看到,当值的范围在-128~127的时候Integer可以直接用==比较大小,但是超出这个范围时,==就不管用了。原因是什么呢?我百度了一下之后找到下面这个方法:
首先看注释,这里大概意思是有个缓存机制,值范围在-128~127的会使用这个缓
问题总结···整型包装类的大小比较问题
最新推荐文章于 2023-07-07 09:26:21 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)