equals는 object에서 제공하는 메서드입니다
equals는 두 기본 유형의 변수 값이 같은지 비교하는 데 사용됩니다. 참조 유형에서 사용하면 두 변수가 같은지 비교합니다. 동일한 객체를 가리킵니다
객체에서 equals와 ==는 모두 주소가 같은지 비교하고, String에서는 equals는 값이 같은지 비교합니다.
equals는 내용이 같은지 비교합니다. 두 개의 차단 객체가 동일한 반면 = = 비교는 메모리의 값이 동일한지 여부입니다
정수 변수를 비교하는 데 같음을 사용할 수 없습니다
다음은 코드 구현입니다.
//定义一个Student类 public class Student { private int age; public Student(int age) { this.age = age; } public boolean equals(Object obj) { if(this==obj){ return true; } if(obj instanceof Student){ Student st = (Student)obj; return this.age==st.age; } return false; } }
//定义一个Demo3主类,创建对象输出他们的结果并分析其原因 public class Demo3 { public static void main(String[] args) { Student s1 = new Student(100); Student s2 = new Student(100); Student s3 = s1; System.out.println(s1==s2); System.out.println(s1.equals(s2)); System.out.println(s1.equals(s3)); } }
//定义一个Demo类,分别用几种不同的方式给以下7个变量赋值,分析这几种方式有什么区别 public class Demo { public static void main(String[] args) { // 以下三种方式都是在内存中保存一个数值100 int a1 = 100; int a2 = 100; Integer a3 = 100; Integer a4 = 100; Integer a5 = new Integer(100); Integer a6 = new Integer(100); System.out.println(a1 == a2); System.out.println(a3 == a4); System.out.println(a1 == a3); System.out.println(a5 == a6); System.out.println(a1 == a5); System.out.println(a3 == a5); int a7 = a6;
//定义一个Demo2主类,分别给变量赋值,分别用==和equals输出结果,看有什么不同并分析其原因 public class Demo2 { public static void main(String[] args) { String s1 = "ABC"; String s2 = "ABC"; String s3 = new String("ABC"); String s4 = new String("ABC"); System.out.println(s1 == s2); System.out.println(s3 == s4); System.out.println(s1 == s3); System.out.println("-------------------------"); System.out.println(s1.equals(s2)); System.out.println(s3.equals(s4)); System.out.println(s1.equals(s3)); } }