解释 Object、String 和 StringBuffer 类的 equals() 方法。
java 8object oriented programmingprogramming
为了比较两个对象,对象类提供了一个名为 equals() 的方法,此方法接受一个对象并将其与当前对象进行比较。如果这两个对象的引用相等,则返回 true,否则此方法返回 false。
示例
在下面的例子中,我们有一个类 Employee,它有两个变量 name、age 和一个参数化构造函数。
从主方法中,我们通过传递相同的值来创建两个对象,并使用 equals() 方法比较这两个值。
由于 Object 类的 equals() 方法仅在两个对象的引用相等时才返回 true,因此此程序返回 false。
import java.util.Scanner; class Employee { private String name; private int age; Employee(String name, int age){ this.name = name; this.age = age; } } public class EqualsExample { public static void main(String[] args) { Scanner sc =new Scanner(System.in); System.out.println("输入您的姓名"); String name = sc.next(); System.out.println("输入您的年龄"); int age = sc.nextInt(); Employee emp1 = new Employee(name, age); Employee emp2 = new Employee(name, age); //比较两个对象 boolean bool = emp1.equals(emp2); System.out.println(bool); } }
输出
输入您的姓名 Krishna 输入您的年龄 20 false
String 类的 equals() 方法
String 类的 equals() 方法与 Object 类的 equals() 方法不同。它被重写,此方法接受一个 String 值并将其与当前对象进行比较,并且仅当两个 String 对象中的字符序列完全相同时才返回 true。
示例
在下面的示例中,我们接受来自用户的值,创建两个 String 对象并使用 equals() 方法对它们进行比较并显示结果。
因为仅当您输入相同的字符序列时,equals 方法才返回 true。您需要输入相同的值才能打印 true。
import java.util.Scanner; public class StringEquals { public static void main(String[] args) { Scanner sc =new Scanner(System.in); System.out.println("输入一个名字"); String name1 = sc.next(); System.out.println("输入另一个名字"); String name2 = sc.next(); //比较两个对象 boolean bool = name1.equals(name2); System.out.println(bool); } }
输出
输入一个名字 Krishna 输入另一个名字 Krishna true
StringBuffer 类的 equals() 方法
但是,与 Sting 类不同,StringBuffer 不会覆盖 equals() 方法。其功能与 Object 类相同。
因此,要获得 true,您需要使用 equal 方法比较指向相同值的引用。
示例
import java.util.Scanner; public class StringEquals implements Cloneable{ public static void main(String[] args) { Scanner sc =new Scanner(System.in); System.out.println("输入一个名称"); StringBuffer name1 = new StringBuffer(sc.next()); StringBuffer name2 = name1; //比较两个对象 boolean bool = name1.equals(name2); System.out.println(bool); } }
输出
输入一个名称 krishna true