首先要说到==和 equals 的区别了
1. ==比较的是两个对象在内存中的地址值(栈中的内容)。
2.equals 是 java.lang.Object 类的一个方法。equals 比较的是两个对象的内容(堆中的内容)。java 中所有的类都默认继承于 Object,所以所有的类都有这个方法。
但是 Long 是一个对象,是对 long 的封装。我们看一下 Long 对象的源码,里面的 equals 方法是这么写的:
public boolean equals(Object obj) { if (obj instanceof Long) { return value == ((Long)obj).longValue(); } return false; }
所以两个 Long 类型的变量进行比较的话,要么用 equals,要么先调用longValue 方法,拿到里面的 long 值之后再进行==比较。
这两个都是Long型的 所以得用equals比较
这个parseLong方法返回值是long类型,而不是Long类型 这个Long类型又是long的包装类,是可以自动互转的,所以用等号直接比较成功了 相当于两个long基本类型数据再比较,而不是两个Long类型在做比较