Loading

java中Long的比较

java中Long的比较要用equals而不要用==

当Long为常量且常量值小于一个字节时,两个Long指向同一个常量内容;

Long userId=12L;
Long authorId=12L; 
System.out.println(userId==authorId);//true

当Long为常量且常量值大于一个字节(>127)时,两个Long指向不同的常量内容。

Long userId=130L;
Long authorId=130L;
System.out.println(userId==authorId);//false

当Long是引用类型时,比较两个Long的大小,一定要用equals而不能用==

Long x=new Long(18);
Long y=new Long(18);
System.out.println(x==y);//false
System.out.println(x.equals(y));//true

原因:Java 基本类型的包装类的大部分都实现了常量池技术,即Byte,Short,Integer,Long,Character;这5种包装类默认创建了数值[-128,127]的相应类型的缓存数据,但是超出此范围仍然会去创建新的对象

posted @ 2017-05-05 10:52  辉灬  阅读(10642)  评论(0编辑  收藏  举报