欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

重写Object的toString()和equals()之精细详解,tostringequals

来源: javaer 分享于  点击 24288 次 点评:169

重写Object的toString()和equals()之精细详解,tostringequals


box.java类

/*
 * 重写Object的toString()和equals()精细详解
 * 
 * 
 * 为什么要重写Object的toString()
 * 答:继承自父类的toString()方法,你是看不懂他打印出来的类的属性值的。
 * 以便于打印类的每个属性值,我们就要重写父类的toString方法了。
 * 
 * 为什么要重写Object的equals()
 * 答:便于项目需求,我们要测试两个对象的变量值的内容是否相等,那么就需要重写Object的equals()方法了
 */

public class box {

    //声明两个变量测试(name)(age)
    String name;
    int    age;

    //声明一个构造方法便于进行传值
    public box(String name,int age) {
        super();
        this.name = name;
        this.age = age;
    }

    //*********************重新父类的toString()*************************

        @Override
        public String toString() {
            return "box [name=" + name + ", age=" + age + "]";
        }

    //*********************重新父类的equals()*************************

        @Override
    public boolean equals(Object obj) {
        // 如果当前比较的值(this)和传入的值(obj)相等那么直接返回true

            if((this == obj)) {
            return true;
        }
        //如果传入的值(obj)是box的引用实例化对象便继续判断if方法否则返回false
        if(obj instanceof box) {
            //判断了obj是box的实例化对象之后,强制转换obj 为 box 引用对象
            box s=(box) obj;
            //判断当前对象(this)的name属性与 传入的obj强制转换为box引用的name属性是否相等,如果不相等返回false
            if(!this.name.equals(s.name)) {
                return false;
            }
            //判断当前对象(this)的age属性与 传入的obj强制转换为box的引用的name属性是否相等,如果不想等返回false
            if(this.age!=s.age) {
                return false;
            }
            //如果if(obj instanceof box)方法中的if语句全部相等那么返回true
            //equals(Object obj)的boolean返回值边为true;
            return true;
        }
        //如果if(obj instanceof box)方法的表达式为false,说明传入的值(obj)不是box的引用类型
        //equals(Object obj)的boolean返回值边直接返回false;
        return false;

    }


}

实例box的测试类(test1)


public class test1 {

    //main方法开始
    public static void main(String[] args) {

        //box引用对象b1进行传值
        box b1=new box("b1",1);

        //box引用对象b2进行传值
        box b2=new box("b1",11);

        //打赢重写父类了的equals()方法;
        System.out.println("b1.equals(b2)的结果为:"+b1.equals(b2));

        //打赢重写父类了的toString()方法;
        System.out.println(b1.toString());
        System.out.println(b2.toString());


        }

    /*控制台输入结果为:
     * 
     * b1.equals(b2)的结果为:false
     * box [name=b1, age=1]
     * box [name=b1, age=11]
     * 
     */
}

相关文章

    暂无相关文章

用户点评