目录
== 运算符是Java中用于比较两个操作数是否相等的运算符。它可以用于比较基本数据类型和对象类型。
1、对于基本数据类型:== 比较的是两个操作数的值是否相等。如果两个操作数的值相等,则返回 true,否则返回 false。
- public class main {
-
- public static void main(String[] args) {
- String str1 = new String("Hello");
- String str2 = new String("Hello");
- System.out.println(str1 == str2); // false
-
- String str3 = str1;
- System.out.println(str1 == str3); // true
-
- }
- }
2、对于对象类型:== 比较的是两个操作数的引用地址是否相等,即它们是否引用同一个对象。如果两个操作数引用同一个对象,则返回 true,否则返回 false。
- public class main {
-
- public static void main(String[] args) {
- String str1 = new String("Hello");
- String str2 = new String("Hello");
- System.out.println(str1 == str2); // false
-
- String str3 = str1;
- System.out.println(str1 == str3); // true
-
- }
- }
总结:
equals() 方法是Java中用于比较两个对象内容是否相等的方法。它是Object类中定义的方法,因此所有的Java类都继承了这个方法。默认情况下,equals() 方法与== 运算符的行为相同,比较的是两个对象的引用地址。
然而,很多类会重写equals() 方法以实现自定义的相等比较逻辑。例如,String类、Integer类等都重写了equals() 方法来比较对象的内容而不是引用地址。
equals() 方法的通用语法如下:
- public boolean equals(Object obj) {
- // 相等比较逻辑的实现
- }
在重写equals() 方法时,通常需要满足以下几个原则:
以下是一个示例,展示了如何重写equals() 方法:
- public class Person {
- private String name;
- private int age;
-
- public Person(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null || getClass() != obj.getClass()) {
- return false;
- }
- Person person = (Person) obj;
- return age == person.age && name.equals(person.name);
- }
-
- public static void main(String[] args) {
- Person person1 = new Person("Alice", 25);
- Person person2 = new Person("Alice", 25);
- Person person3 = new Person("Bob", 30);
-
- System.out.println(person1.equals(person2)); // true
- System.out.println(person1.equals(person3)); // false
- }
- }
在上述示例中,我们重写了equals() 方法来比较Person类的两个对象。我们自定义了相等比较的逻辑,即如果两个对象的name 和 age 相等,则认为它们相等。尽管person1 和 person2 是两个不同的对象,但由于它们的内容相等,因此调用equals() 方法会返回true。
总结:
equalsIgnoreCase() 方法是Java中用于比较两个字符串内容是否相等(忽略大小写)的方法。它是String类中定义的方法,用于在不考虑大小写的情况下比较字符串。
equalsIgnoreCase() 方法的通用语法如下:
- public boolean equalsIgnoreCase(String anotherString) {
- // 忽略大小写的相等比较逻辑的实现
- }
使用equalsIgnoreCase() 方法进行字符串比较时,它会先将两个字符串都转换为小写(或大写),然后比较转换后的字符串是否相等,忽略大小写差异。
以下是一个示例,展示了如何使用equalsIgnoreCase() 方法进行字符串比较:
- public class main {
- public static void main(String[] args) {
- String str1 = "Hello";
- String str2 = "hello";
- String str3 = "WORLD";
-
- System.out.println(str1.equalsIgnoreCase(str2)); // true
- System.out.println(str1.equalsIgnoreCase(str3)); // false
- }
- }
在上述示例中,我们使用equalsIgnoreCase() 方法比较了三个字符串的内容。尽管str1 和 str2 的大小写不同,但由于忽略了大小写差异,因此调用equalsIgnoreCase() 方法会返回true。而str1 和 str3 的大小写不同,并且大小写敏感,所以调用equalsIgnoreCase() 方法会返回false。
总结:
compareTo() 方法是Java中用于比较两个字符串的大小关系的方法。它是Comparable接口中定义的方法,String类实现了Comparable接口,因此可以直接使用compareTo() 方法来比较字符串的大小关系。
compareTo() 方法的通用语法如下:
- public int compareTo(String anotherString) {
- // 字符串大小关系比较逻辑的实现
- }
compareTo() 方法比较的规则是基于字典顺序进行的,它会逐个比较两个字符串对应位置上的字符的Unicode值。具体规则如下:
具体可查看此表,
以下是一个示例,展示了如何使用compareTo() 方法进行字符串大小关系的比较:
- public class main {
- public static void main(String[] args) {
- String str1 = "apple";
- String str2 = "banana";
- String str3 = "apple";
-
- System.out.println(str1.compareTo(str2)); // 返回一个负数 -1
- System.out.println(str2.compareTo(str1)); // 返回一个正数 1
- System.out.println(str1.compareTo(str3)); // 返回0
- }
- }
在上述示例中,我们使用compareTo() 方法比较了三对字符串的大小关系。根据字典顺序,"apple" 在 "banana" 之前,因此调用str1.compareTo(str2) 返回一个负数;而 "banana" 在 "apple" 之后,因此调用str2.compareTo(str1) 返回一个正数;而 "apple" 和 "apple" 相等,因此调用str1.compareTo(str3) 返回0。
总结:
1、== 操作符:
2、equals() 方法:
3、equalsIgnoreCase() 方法:
4、compareTo() 方法:
总结: