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 而是在子类中对这个方法进行重写。*/