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


    一、文字描述

         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转化为当前类的对象,然后将对象中的成员进行逐个比较 

     

     

     

  • 相关阅读:
    PyTorch 从tensor.grad 看 backward(权重参数) 和 gradient accumulated
    【C++面向对象侯捷】8.栈,堆和内存管理
    NLP涉及技术原理和应用简单讲解【一】:paddle(梯度裁剪、ONNX协议、动态图转静态图、推理部署)
    Linux驱动开发 问题随笔
    kafka消费者多线程开发
    Kerberos认证
    传染病学模型 | Matlab实现SEIR传染病学模型 (SEIR Epidemic Model)
    修改51单片机中数组元素的值
    Beetl 源码解析:GroupTemplate 类
    【String类的常用方法】
  • 原文地址:https://blog.csdn.net/m0_53677355/article/details/127038910