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]的相应类型的缓存数据,但是超出此范围仍然会去创建新的对象