1.package com.msb.test02;
2.
3./**
4. * @Auther: msb-zhaoss
5. */
6.public class Phone {//手机类:
7. //属性:
8. private String brand;//品牌型号
9. private double price;//价格
10. private int year ;//出产年份
11. //方法:
12.
13. public String getBrand() {
14. return brand;
15. }
16.
17. public void setBrand(String brand) {
18. this.brand = brand;
19. }
20.
21. public double getPrice() {
22. return price;
23. }
24.
25. public void setPrice(double price) {
26. this.price = price;
27. }
28.
29. public int getYear() {
30. return year;
31. }
32.
33. public void setYear(int year) {
34. this.year = year;
35. }
36.
37. @Override
38. public String toString() {
39. return "Phone{" +
40. "brand='" + brand + '\'' +
41. ", price=" + price +
42. ", year=" + year +
43. '}';
44. }
45.
46. //构造器:
47.
48. public Phone() {
49. }
50.
51. public Phone(String brand, double price, int year) {
52. this.brand = brand;
53. this.price = price;
54. this.year = year;
55. }
56.
57.
58. //对equals方法进行重写:
59. public boolean equals(Object obj) {//Object obj = new Phone();
60. //将obj转为Phone类型:
61. Phone other = (Phone)obj;//向下转型,为了获取子类中特有的内容
62. if(this.getBrand()==other.getBrand()&&this.getPrice()==other.getPrice()&&this.getYear()==other.getYear()){
63. return true;
64. }
65. return false;
66. }
67.}
1.package com.msb.test02;
2.
3./**
4. * @Auther: msb-zhaoss
5. */
6.public class Test {
7. //这是一个main方法,是程序的入口:
8. public static void main(String[] args) {
9.
10. //创建Phone类的对象:
11. Phone p1 = new Phone("华为P40",2035.98,2020);
12. Phone p2 = new Phone("华为P40",2035.98,2020);
13. //比较两个对象:p1和p2对象:
14. //==的作用:比较左右两侧的值是否想的,要么相等,返回true,要么不相等,返回false
15. System.out.println(p1==p2);//-->>>对于引用数据类型来说,比较的是地址值。--->一定返回的是false
16.
17. //Object类提供了一个方法 equals方法 :作用:比较对象具体内容是否相等。
18. boolean flag = p1.equals(p2);//点进源码发现:底层依旧比较的是==,比较的还是地址值。
19. System.out.println(flag);
20.
21. }
22.}
总结:
equals作用:这个方法提供了对对象的内容是否相等 的一个比较方式,对象的内容指的就是属性。
父类Object提供的equals就是在比较==地址,没有实际的意义,我们一般不会直接使用父类提供的方法,
而是在子类中对这个方法进行重写。
instanceof
利用集成开发工具生成equals方法
【1】利用eclipse:
【2】利用idea: