java 通过引用中对象进行比较,== 操作符引用地址, equals() 比较对象内容的方法。对于基本类型,equals() 对比值,对于引用类型,equals() 通常比较内容的相等性,比如 string 的 value 属性比较。使用 == 即使内容相同,两个不同的对象也会返回 false;使用 equals() 当时,不同对象的相同内容将返回 true,如比较两个 person 对象。
Java 对象比较:机制与实战的比较:
在 Java 在中间,对象可以通过其引用进行比较。对象引用表示存储在内存中的对象的地址。当我们比较两个对象引用时,我们实际上是在比较它们引用的对象是否相同。
== 和 equals() 方法
Java 提供了两种比较对象的方法:
- == 操作符:引用比较对象。如果两个引用指向同一对象,则返回 true;否则返回 false。
- equals() 方法:比较对象的实际内容。如果两个对象的值相等,则返回 true;否则返回 false。
== 的实现
== 操作符的实现相对简单,它直接比较了两个引用地址。如果两个引用指向相同的对象,它们是相等的。
public boolean equals(Object obj) { if (this == obj) { return true; } return false; }
登录后复制
equals() 的实现
equals() 该方法的实现需要根据不同的对象类型而有所不同。对于基本类型(如 int、double),equals() 比较它的价值。对于引用类型(如 String、ArrayList),equals() 通常比较其内容是否相等。
以下是两个比较的示例 String 对象:
public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof String) { String other = (String) obj; return this.value.equals(other.value); } return false; }
登录后复制
实战案例
假设我们有一个代码,我们创建了两个代码 Person 对象:
Person p1 = new Person("John", 25); Person p2 = new Person("John", 25);
登录后复制
使用 == 当运算符比较这两个对象时,它们将返回 false,因为它们是不同的对象。
System.out.println(p1 == p2); // 输出 false
登录后复制
但是,使用 equals() 当方法比较它们时,它们将返回 true,因为它们的内容是相等的。
System.out.println(p1.equals(p2)); // 输出 true
登录后复制
以上是Java对象的比较是如何实现的?详情请关注图灵教育其他相关文章!
