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的默认传入机制是不是