当Long型使用equals的时候出现的问题,无法判断怎么办?

1111
今天在写项目的时候,出现long型问题的判断

Long id = 1212121218888L;
System.out.println(id.equals(1212121218888);  // false
System.out.printLn(id.equals(1212121218888L);  // true

多了一个 L ,就是true了,
看源码可知:

1 public boolean equals(Object obj) {
2    if (obj instanceof Long) {
3        return value == ((Long)obj).longValue();
3        }
4        return false;
5    }

Long 类型的重写 equals 使用的是判断的方式: instanceof ,使用instanceof的文档
参考文档 = https://www.cnblogs.com/ysocean/p/8486500.html
在第二行的时候, 使用 instanceof 判断传入的参数的类型是否能转换成后面的Long类型 ,如果在这里判断都是 false 了, 那么,就不进行下面的比较处理了, 所以 是否加 L 就意味着java的默认传入机制是不是

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章