美文网首页
Java学习笔记1

Java学习笔记1

作者: wangmin | 来源:发表于2016-02-27 15:02 被阅读38次

    toString / == / equals 的使用

    toString的使用

    Person p = new Person();
    System.out.println(p);
    

    运行上面的程序得到的结果是:Person@f72645

    其实输出这个结果就是调用了对象的toString()方法,也就是其结果和调用:

    System.out.println(p.toString())
    

    toString是一个自我描述的方法,一般都是在直接打印该对象的时候,输出该对象的描述信息。要实现这个自我描述方法,需要自己重写toString方法。

    class Person {
        private String name;
        private double weight;
        ....
        publci String toString() {
            return "name: " + name + ", weight: " + weight;
        }
    }
    

    上面的Person类就是重写了toString方法,在打印该对象的时候,就是打印:

    name: xxxx, weight: xxx
    

    equlas方法和==的区别

    判断两个对象是否相等可以使用equals方法,另一种是使用==判断。

    使用 == 判断两个对象是否相等的条件是:

    • 如果两个对象都是基本类型,那么他们的值相等就返回true
    • 如果非基本类型,则说明他们的引用需要指向同一个对象,这个时候才返回true.

    例如:

    int i = 100;
    float f = 100.0f;
    i == f 返回true
    
    String str1 = new String("hello");
    String str2 = new String("hello");
    str1 == str2 这个将输出false
    

    而equlas是Object提供的一个方法,使用这个方法来判断两个对象是否相等,和使用 == 来判断是一样的效果,但是equlas方法是可以被子自定义的类重写的。

    class Person {
    
        ...
        
        public boolean equlas(Object obj) {
            ... 
            return true;
        }
    } 在使用equlas比较的时候就会调用自定义的equlas方法,提供一个标准的equlas方法重写的模板:
    
    public boolean equlas(Object obj) {
    
        if (this == obj) {
            return true;
        }
        if (obj != null  && obj.getClass() == Person.class) {
            Person pobj = (Person)obj;
            if (...) {
                return true;
            }
        }
        return false;
    }
    

    Object 默认提供的equlas只是比较对象的地址,即Object类的equlas方法比较的结果与 == 运算符比较的结果是完全相同。因此,在实际运用中需要重写equals,这时候可以根据自己的条件来决定如何判断相等。

    相关文章

      网友评论

          本文标题:Java学习笔记1

          本文链接:https://www.haomeiwen.com/subject/pivwkttx.html