今天写项目时,把两个Long型对象用==比较,以为会自动拆箱,直接比较数值大小,但是发现比较结果有问题,分享一下问题原因。
Long中有一个静态的内部类LongCache,用于缓存-128-127之间的值,一共256个元素
本来就是比较内存地址,缓存了的256个元素,内存地址相同的返回true,之外没有缓存是false。
以后建议使用equals方法或者longValue方法比较大小。
今天写项目时,把两个Long型对象用==比较,以为会自动拆箱,直接比较数值大小,但是发现比较结果有问题,分享一下问题原因。
Long中有一个静态的内部类LongCache,用于缓存-128-127之间的值,一共256个元素
本来就是比较内存地址,缓存了的256个元素,内存地址相同的返回true,之外没有缓存是false。
以后建议使用equals方法或者longValue方法比较大小。