zoukankan      html  css  js  c++  java
  • java equals和tostring

    Object类概述

    是所有类中的父类,最大的超类,所有的类都继承他。

    equals方法

    比较2个对象是否相同,其实他是在比较两个对象的地址是否相同,在equals方法中我们用==来判断

    但是比较2个地址相同实在没有什么意义,实际开发中我们可能会比较2个对象的属性是否一样,所以我们会在类中重写equals方法再调用

    注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。

    比较2个人的年龄是否相同:

     1 package com.orcale.demo01;
     2 
     3 public class Person {
     4     private String name;  //首先定义人的属性年龄和名字
     5     private int age;
     6     public String getName() {
     7         return name;
     8     }
     9     public void setName(String name) {
    10         this.name = name;
    11     }
    12     public int getAge() {
    13         return age;
    14     }
    15     public void setAge(int age) {
    16         this.age = age;
    17     }
    18     //判断是否是同龄人
    19     public boolean equals(Object obj) {    //重写equals方法,形参传object类,父类的类型多态的 obj是传进来的一个地址,p2的地址。
    20         if(obj==this){                   判断一下传进来的地址是不是一样,如果是传一个p1,那就是p1==p1,不用再判断了就是ture
    21             return true;
    22         }
    23         if(obj instanceof Person){           //先判断一下是不是传进来的obj是不是Person类,如果不是直接返回false,如果是就进方法体。
    24             //向下转型              //因为是父类,但是我们要判断Person年龄属性,我们要把父类转换到子类,强转子类,然后判断
    25             Person p =(Person)obj;
    26             return this.age == p.age;
    27         }
    28         return false;
    29     }33    } 
    34 }
     1     Person p1 =new Person();
     2         p1.setAge(28);
     3         Person p2 =new Person();
     4         p2.setAge(30);
     5         //调用equals()方法,
     6         //如果Person没有重写object子类,那就是调用objeck中的方法
     7         //比较的是两个对象的内存地址,没有意思。Person类如果要比较年龄是否相同
     8         //就要重写父类的equals方法
     9         boolean b = p1.equals(p2);    //调用equals方法赋值给b
    10         System.out.println(b);

    判断一下汽车的颜色是否一样

     1 package com.orcale.demo01;
     2 
     3 public class car {
     4     private String color;
     5     private int lunzi;
     6     public String getColor() {
     7         return color;
     8     }
     9     public void setColor(String color) {
    10         this.color = color;
    11     }
    12     public int getLunzi() {
    13         return lunzi;
    14     }
    15     public void setLunzi(int lunzi) {
    16         this.lunzi = lunzi;
    17     }
    18     public boolean equals(Object a){
    19         if(this==a){
    20             return true;
    21         }
    22         if(a instanceof car){
    23         car c =(car)a;
    24         return this.color==c.color;
    25         }
    26         return false;
    27     
    28     }
    29 }
        car c1 =new car();
            c1.setColor("红色");
            car c2 =new car();
            c2.setColor("绿色");
            boolean b =c1.equals(c2);
            System.out.println(b);

    toString方法

     

    toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。

    由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

    package com.orcale.demo01;
    
    public class dog {
         private String name;
         private String color;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getColor() {
            return color;
        }
        public void setColor(String color) {
            this.color = color;
        }
        public String toString(){   重写toString方法,返回名字+颜色
            
            return name+"	"+color;        
        } 
    }
    1         dog d1 = new dog();   
    2         d1.setColor("白色");
    3         dog d2 =new dog();
    4         d2.setColor("黑色");
    5         String d =d1.toString();
    6         System.out.println(d1);
    7         System.out.println(d2);

     

  • 相关阅读:
    jsonp 监控简陋代码
    Oracle多线程并行使用、关联与指定索引执行
    Oracle计算时间差表达式
    行查列显
    JS时间
    通过string型类名实例化一个类
    sotower1.5-LS_工作流容易出错的地方
    oracle11g ORA-12505
    华项笔记本显示颜色变黄,调整好了重启还是偏黄
    ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
  • 原文地址:https://www.cnblogs.com/wangrongchen/p/9076267.html
Copyright © 2011-2022 走看看