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