1 package com.msb7;
2
3 public class Phone {
4 private String brand;
5 private double price;
6 private int year;
7
8 public String getBrand() {
9 return brand;
10 }
11
12 public void setBrand(String brand) {
13 this.brand = brand;
14 }
15
16 public double getPrice() {
17 return price;
18 }
19
20 public void setPrice(double price) {
21 this.price = price;
22 }
23
24 public int getYear() {
25 return year;
26 }
27
28 public void setYear(int year) {
29 this.year = year;
30 }
31
32 public Phone() {
33 }
34
35 public Phone(String brand, double price, int year) {
36 this.brand = brand;
37 this.price = price;
38 this.year = year;
39 }
40
41 @Override
42 public String toString() {
43 return "Phone{" +
44 "brand='" + brand + '\'' +
45 ", price=" + price +
46 ", year=" + year +
47 '}';
48 }
49
50 public boolean equals(Object obj) {
51 /*
52 instanceof运算符;
53 a instanceof b:
54 判断a对象是否是b这个类的实例,如果是,返回true,如果不是返回false
55 */
56 if(obj instanceof Phone){//属于Phone类的对象
57 //将obj转为Phone类型:
58 Phone other = (Phone)obj;
59 if(this.getBrand()==other.getBrand()&&this.getPrice()==other.getPrice()&&this.getYear()==other.getYear()){
60 return true;
61 }
62 }
63 return false;
64
65 }
66 }
//cat类
1 package com.msb7;
2
3 public class Cat {
4 }
1 package com.msb7;
2 //测试类
3 public class Test {
4 public static void main(String[] args) {
5 Phone p1 = new Phone("荣耀v30pro",3076.98,2019);
6 Phone p2 = new Phone("荣耀v30pro",3076.98,2019);
7 //比较两个对象:p1和p2对象:
8 //==的作用:比较左右两侧的值是否相等,要么相等,返回true,不想等,返回false;
9 System.out.println(p1==p2); //--->>对于引用数据类型来说,比较的是地址值,返回的一定是false
10
11 //object 类提供了一个方法equals方法:作用:比较对象具体的内容是否相等。
12 boolean flag = p1.equals(p2);//点击源码发现:底层依旧比较的是==,比较的还是地址值。
13 System.out.println(flag);//返回true
14
15
16
17 Cat c = new Cat();
18 boolean flag1 = p1.equals(c);
19 System.out.println(flag1); //返回false
20 }
21 }
22 /*equals作用:提供了对对象的内容是否相等的一个比较方式,对象的内容指的就是属性,
23 父类Object提供的equals就是在比较==地址,没有实际的意义,一般不会直接使用父类提供的方法,
24 而是在子类中对这个方法进行重写。*/
//elipse生成equals方法
1 //利用IDE生成equals方法
2 @Override
3 public boolean equals(Object o) {
4 if (this == o) return true;
5 if (o == null || getClass() != o.getClass()) return false;
6 Phone phone = (Phone) o;
7 return Double.compare(phone.price, price) == 0 && year == phone.year && Objects.equals(brand, phone.brand);
8 }
9
10 @Override
11 public int hashCode() {
12 return Objects.hash(brand, price, year);
13 }
14 }