Java学习笔记1

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,这时候可以根据自己的条件来决定如何判断相等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容