对象比较主要涉及两种情况:
对象相等性比较:可以使用equals()方法比较Java对象是否相等,equals()方法可以根据自定义逻辑来实现对象的相等性比较。
对象引用比较:可以使用==运算符来比较Java对象是否是同一个引用,即是否指向同一个对象。
字符串比较主要有两种方式:
字符串内容比较:可以使用equals()方法来比较字符串内容是否相等,equals()方法比较的是字符串中的字符序列。
字符串引用比较:可以使用==运算符来比较字符串是否是同一个对象的引用,即是否指向同一个字符串对象。
需要注意的是,字符串比较和对象比较的本质区别在于,字符串是一种特殊的对象类型,在Java中有自己的比较方式和特殊的优化机制。此外,Java8以后,字符串的比较还可以使用compareTo()方法来进行比较,该方法可以比较任意两个字符串的字典序大小,方便排序等操作。
Java 中对象的比较(比较对象中的属性)示例:
public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}// 重写 equals 方法@Overridepublic boolean equals(Object obj) {if (obj == null) {return false;}if (this == obj) {return true;}if (!(obj instanceof Person)) {return false;}Person person = (Person) obj;return this.name.equals(person.getName()) && this.age == person.getAge();}// 重写 hashCode 方法@Overridepublic int hashCode() {int result = 17;result = 31 * result + (name == null ? 0 : name.hashCode());result = 31 * result + age;return result;}// Getters and setterspublic String getName() { return name; }public void setName(String name) { this.name = name; }public int getAge() { return age; }public void setAge(int age) { this.age = age; }}
public class Main {public static void main(String[] args) {Person person1 = new Person("Tom", 20);Person person2 = new Person("Tom", 20);System.out.println(person1.equals(person2));// true}}
以下是 Java 中字符串的比较(比较字符串的内容)示例:
public class Main {public static void main(String[] args) {String str1 = "hello";String str2 = "HELLO".toLowerCase();System.out.println(str1.equals(str2)); // trueSystem.out.println(str1.equalsIgnoreCase(str2)); // true}}
注:equals
方法用于比较两个字符串的内容是否相同,区分大小写;equalsIgnoreCase
方法用于比较两个字符串的内容是否相同,不区分大小写。