在Java中,默认情况下从超类Object类继承而来的equals方法和“==”是完全一样的,比较的都是对象的内存地址。
但是String类重写了equals()方法,所以我们比较的是重写后的equals()和==的区别。
1.功能不同
==是判断两个变量或实例是不是指向同一个内存空间,equals是对内容(值)进行比较
- 定义不同
equals()是Java中的一个方法,==是Java中的一个运算符
3.运行速度不同
“==”比equals运行速度快,因为“==”只是比较引用。
equals的源码中,有对比较的参数进行判断,如果进行比较的参数不是string的实例,会直接返回false,所string和char不能进行equals比较。下图为equals的源码。