操作符 “==” 用来比较两个操作元是否相等,这两个操作元既可以是基本类型,也可以是引用类型。
在 java.lang.Object 类中定义了 equals() 方法,比较两个对戏那个是否相等。
当操作符 “==” 两边都引用类型变量时,这两个引用变量必须引用同一个对象,结果才为 true。
操作符 “==” 与多态性
对于引用类型变量,Java 编译器根据变量被显示声明的类型去编译。
当 “==” 用于比较引用类型变量时,“==” 两边的变量被显示声明的类型必须是同一个继承分支上,否则编译出错。
而在运行时,Java 虚拟机讲根据两边的引用变量实际引用的对象进行比较。
对象的 equals() 方法
Object 类的 equals() 方法的比较规则为:当参数 obj 引用的对象与当前对象为同一个对象时,就返回 true,否则返回 false。
在 JDK 中有一些类覆盖了 Object 类的 equals() 方法,它们的比较规则为:如果两个对象的类型一致,并且内容一致,则返回 true。这些类包括:java.io.File、java.util.Date、java.lang.String、包装类(java.lang.Integer 和 java.lang.Double 等)
Boolean 类是包装类,只要两个 Boolean 对象的布尔值内容一样,equals() 方法比较结果就为 true。
Float 和 Double 类型是包装类,只要两个 Float 对象或两个 Double 对象的内容一样,equals()方法的比较结果就为 true。