• 内置类型、引用类型的比较


    一、文字描述

         1、内置类型用==比较

              == 左右两侧如果是内置类型的变量,直接用变量中的数值直接比较

          2、引用类型

              引用类型变量使用==进行比较,并不是比较引用对象中的内容,而是比较引用对象的地址

    二、代码演示

    1. public class Date {
    2. public int year;
    3. public int month;
    4. public int day;
    5. public Date(int year,int month,int day){
    6. super();//调用基类的构造方法
    7. this.year = year;
    8. this.month = month;
    9. this.day = day;
    10. }
    11. @Override
    12. public String toString() {
    13. // return super.toString();需要进行重写
    14. return "[" + year + "/" + month + "/" + day + "]";
    15. }
    16. @Override
    17. public boolean equals(Object obj) {
    18. if(obj == null){
    19. return false;
    20. }
    21. //this == obj 检测this和obj指向的是否是同一个对象,那既然指向的是同一个对象,内容肯定一样
    22. if(this == obj){
    23. return true;
    24. }
    25. if(!(obj instanceof Date)){
    26. return false;
    27. }
    28. Date d = (Date)obj;
    29. return (year == d.year) && (month == d.month) && (day == ((Date) obj).day);
    30. }
    31. public static void method1(){
    32. Date d = new Date(2022,9,13);
    33. System.out.println(d);
    34. }
    35. public static void method2(){
    36. int a = 10;
    37. int b = 20;
    38. int c = 10;
    39. //内置类型使用==进行比较
    40. System.out.println(a == b);
    41. System.out.println(a == c);
    42. System.out.println("==========================");
    43. //引用类型使用==进行比较
    44. Date d1 = new Date(2022,9,13);
    45. Date d2 = new Date(2022,9,13);
    46. Date d3 = new Date(2022,9,13);
    47. System.out.println(d1 == d2);
    48. System.out.println(d2 == d3);
    49. //如果想要比较对象中的内容,需要调用equals的方法来比较,注意,equals必须要进行重写
    50. System.out.println("==========================");
    51. System.out.println(d1.equals(d2));
    52. System.out.println(d2.equals(d3));
    53. }
    54. public static void main(String[] args) {
    55. method1();
    56. method2();
    57. }
    58. }

    运行结果为:

     

    注:对equals方法进行重写

          1、先检测obj是否为空,如果为空,肯定不相等,直接返回false

          2、需要检测是否为自己和自己比较,自己和自己比较肯定是相等的,直接返回true

          3、两个不同的对象进行比较,此时需要检测obj是否为当前类的一个对象,如果不是,肯定不相等

          4、说明obj一定是当前类的对象,将obj转化为当前类的对象,然后将对象中的成员进行逐个比较 

     

     

     

  • 相关阅读:
    删除所有出现次数最少的字符
    花咲の姫君(異時層ツキハ) / 花咲(异时层妖刀)
    Golang和Java对比
    git diff 生成patch合入代码
    redis系列文章
    华为云云耀云服务器L实例评测 | 搭建企业级 Registry 服务器 Harbor
    类加载子系统
    Docker知识总结 (六) Docker网络
    P2756 飞行员配对方案问题
    OJ题之反转链表
  • 原文地址:https://blog.csdn.net/m0_53677355/article/details/127038910