Java中判断两个Long类型是否相等
在项目中将两个long类型的值比较是否相等,结果却遇到了疑问?
下面就陪大家看看一个神奇的现象!
1.1问题?为什么同样的类型,同样的值,却不相等呢?

1.2那么我们就需要探索一下源码了

源码中显示,Long中有一个静态的内部类LongCache,专门用于缓存-128至127之间的值,一共256个元素。
如果值在[-128, 127]之间,会放在缓存里面,而超过这个范围就要new一个新的对象,也就是说==不能判断对象是否相等。当然,如果值是在[-128, 127]之间的话是测不出来什么问题的。
1.3解决方案!
可以使用.longValue() 或者..equals()进行比较。


1.4最佳解决方案为 .eques() 我们可以先看.eques()的源码。

它是先通过.longValue()方法获取Long对象的基本类型long的值之后再做比较的。我们用longValue会比较容易忘记后面一个包装类调longValue方法。
所以所我们最好用.eques()方法,当然也可以用.longValue()的!
Java中判断两个Long类型是否相等的更多相关文章
- Java中的两种异常类型及其区别?
		Java中的两种异常类型是什么?他们有什么区别? Throwable包含了错误(Error)和异常(Excetion两类) Exception又包含了运行时异常(RuntimeException, 又 ... 
- java中判断两个字符串是否相等的问题
		我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的是eq ... 
- Java 中判断两个对象是否相等
		由于每次实例化一个对象时,系统会分配一块内存地址给这个对象,而系统默认是根据内存地址来检测是否是同一个对象,所以就算是同一个类里实例化出来的对象它们也不会相等. public class Transp ... 
- Java中判断两个列表是否相等
		CollectionUtils.isEqualCollection(final Collection a, final Collection b) CollectionUtils工具类中有一个查看两个 ... 
- Java中的两种异常类型是什么?他们有什么区别?
		一.Throwable是所有异常的根,java.lang.Throwable Error是错误,java.lang.Error Exception是异常,java.lang.Exception 二.E ... 
- java中判断两个对象是否相等
		package ceshi.com.job; import java.util.ArrayList; import java.util.Arrays; import java.util.List; p ... 
- Java与JavaScript中判断两字符串是否相等的区别
		JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ... 
- 【转】java中byte数组与int类型的转换(两种方式)----不错
		原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法, ... 
- Java 中字两个字符串判断是否相等(转载)
		java中判断字符串是否相等有两种方法:1.用"=="运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b=&q ... 
随机推荐
- fiddler笔记:与Web Session的交互
			Decode Selected Session 解决响应体显示乱码的问题. AutoScroll Session List 决定Fiddler是否会自动将新增的Session添加到web sessio ... 
- springboot加载application.yml文件null
			话不多说,直接上代码 本人项目为maven项目 以下是项目结构 pom.xml文件 <?xml version="1.0" encoding="UTF-8" ... 
- java 缓存
			外存: 也就是我们经常说的(CDEF盘的大小)外储存器是指除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据.常见的外存储器有硬盘.软盘.光盘.U盘等,一般的软件都是安装在外存中 ... 
- Mysql数据库的优化(本文摘自于网络,文章末端有原文链接)
			对于一个以数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要.一 般来说,要保证数据库的效率,要做好以下四个方面的工作: ① 数据库设计 ② sql语句优化 ③ 数据库参数配置 ... 
- Spring集成kafka,消费者运行时内存占用会一直增长
			Spring集成kafka,消费者运行时内存占用会一直增长? 20C 本人用Spring集成kafka消费者,发布运行时内存占用会一直升高,最后程序挂掉.请各位大神看看,提供解决方法 以下是我的配置文 ... 
- .Net C# 读取xml
			[TestMethod] public void Test3() { StringBuilder temp = new StringBuilder(); temp.AppendFormat(" ... 
- cmder 增强型命令行工具
			下载 https://github.com/cmderdev/cmder/releases/download/1.3.13/cmder.zip Cmder加到右键菜单 https://www.jian ... 
- Javascript简单教程汇总
			什么是函数 一段定义好的代码,并可以反复使用的代码块 函数的作用 提升代码的可复用性,将一段代码进行预定义,需要使用的时候才触发 代码块 形成了一个相对独立的作用域 语法: function 函数名 ... 
- 抽奖JQ
			<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ... 
- 关于google开源的Material Design说明
			原文地址:https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit/wiki/Getting-Started 源码地址:h ... 
