Long之间比较需要用equals 而不是 ==;基本类型与包装类型

Long之间比较需要用equals 而不是 ==;基本类型与包装类型
今天写让通知由未读变成已读的时候: 两个id(Long类型)之间的比较我首先用的 != 但他一直提示,于是我百度了一下。

首先Long不是基本类型;是对象类型

基本类型与包装类型:

整型:byte、short、int、long
浮点数:float、double
字符型:char
布尔型:boolean
包装类型:是比较两个对象的地址相等(如果是两个不同的Long对象,就算值相同,用==也是不相等)

基本类型/值类型 对象类型/引用类型/包装类型/类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

拆箱装箱:

拆箱:包装类型 转换为 基本类型
装箱:基本类型 转换为 包装类型 (new 包装类型)

new Integer(1) //装箱
Integer i = 0; //自动装箱

区别:

Integer a=200;
Integer b=200;
a == b ;//false
包装类型:要通过new关键字来创建对象;是比较两个对象的地址相等才相等;所以用equals来比较
基本类型直接赋值