Object类是所有类的父类
在查看Object源码过程中,用Ctrl+O快捷键可以快速查找
Object类常用的两个方法
1,public String toString() 返回该对象的字符串表示。
2,public boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”
先看toString()方法:
package m12d27;
public class People {
private String name;
public People(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
People p=new People("ss");
System.out.println(p);
//其实就是调用toString方法
System.out.println(p.toString());
}
}
输出结果:
m12d27.People@15db9742
m12d27.People@15db9742
我们来看看toString方法的源码:
按住Ctrl键,点击toString()方法,
可以看到返回的结果如图所示;
这里我们可以重写toString()的方法:
Alt+Shift+S,选择Override/Implements Methods
改为:
package m12d27;
public class People {
private String name;
public People(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
People p=new People("ss");
System.out.println(p);
//其实就是调用toString方法
System.out.println(p.toString());
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.getName();
}
}
输出结果为:
ss
ss
再来说下equals 是比较对象的引用,是否指向同一个堆内存;
package m12d27;
public class People {
private String name;
public People(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
People p1=new People("张三");
People p2=new People("张三");
System.out.println("p1.equals(p2):"+p1.equals(p2));
}
}
可以看到,即使内容一样,但是输出结果仍为false;
p1.equals(p2):false
我们可以重写equals里面的方法:
package m12d27;
public class People {
private String name;
public People(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
String name=((People)obj).getName();
return this.name==name;
}
public static void main(String[] args) {
People p1=new People("张三");
People p2=new People("张三");
People p3=new People("李四");
System.out.println("p1.equals(p2):"+p1.equals(p2));
System.out.println("p1.equals(p3):"+p1.equals(p3));
}
}
其结果为:
p1.equals(p2):true
p1.equals(p3):false
修改了equals里面的方法后,可以看到输出结果只要是内容相同,就为true;