package com.jd;
public class ObjectTest {
/**
* Object类学习
*1、Object类是所有类的祖宗,当我们写一个类的时候,没有显示的继承一个类的时候,
* 默认继承了object类,包括数组
*2、任何一个类都会拥有object类的方法
*3、Object obj=new 任何类型();
*4、object类中的tostring方法,用来表示对象的字符串形式,如果想要我们能看懂的信息
* 可以重写toString方法
*5、equals 方法在非空对象引用上实现相等关系:
自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
对于任何非空引用值 x,x.equals(null) 都应返回 false。
// TODO Auto-generated method stub
Bird bird=new Bird("小白", "白色", "男的");
Bird b1=new Bird("小白", "白色", "男的");
System.out.println(bird);
System.out.println(bird.equals(b1));
}
}
class Bird{
private String name;
private String color;
private String sex;
public Bird(String name, String color, String sex) {
super();
this.name = name;
this.color = color;
this.sex = sex;
}
//重写equals方法
public boolean equals(Object obj){
if(obj==null){//如果obj为空,则直接返回false,任何一个东西和空比较,肯定是false
return false;
}
if(obj.getClass()!=this.getClass()){//如果不是一个类的对象相比较,就返回false,就好像一个狗和一个猫永远不会相等
return false;
}
Bird b=(Bird) obj;
if(!this.name.equals(b.name)){
//this.name类型为String,在比较的时候,会把obj强制转换为String,然后把字符串一个一个的比较
return false;
}
if(!this.color.equals(b.color)){
return false;
}
if(!this.sex.equals(b.sex)){
return false;
}
return true;
}
//重写toString方法
public String toString(){
return "name="+name+",color="+color+",sex="+sex;
}
// public String getInfo(){
// return "name="+name+",color="+color+",sex="+sex;
// }
}
public class ObjectTest {
/**
* Object类学习
*1、Object类是所有类的祖宗,当我们写一个类的时候,没有显示的继承一个类的时候,
* 默认继承了object类,包括数组
*2、任何一个类都会拥有object类的方法
*3、Object obj=new 任何类型();
*4、object类中的tostring方法,用来表示对象的字符串形式,如果想要我们能看懂的信息
* 可以重写toString方法
*5、equals 方法在非空对象引用上实现相等关系:
自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
对于任何非空引用值 x,x.equals(null) 都应返回 false。
*/
// TODO Auto-generated method stub
Bird bird=new Bird("小白", "白色", "男的");
Bird b1=new Bird("小白", "白色", "男的");
System.out.println(bird);
System.out.println(bird.equals(b1));
}
}
class Bird{
private String name;
private String color;
private String sex;
public Bird(String name, String color, String sex) {
super();
this.name = name;
this.color = color;
this.sex = sex;
}
//重写equals方法
public boolean equals(Object obj){
if(obj==null){//如果obj为空,则直接返回false,任何一个东西和空比较,肯定是false
return false;
}
if(obj.getClass()!=this.getClass()){//如果不是一个类的对象相比较,就返回false,就好像一个狗和一个猫永远不会相等
return false;
}
Bird b=(Bird) obj;
if(!this.name.equals(b.name)){
//this.name类型为String,在比较的时候,会把obj强制转换为String,然后把字符串一个一个的比较
return false;
}
if(!this.color.equals(b.color)){
return false;
}
if(!this.sex.equals(b.sex)){
return false;
}
return true;
}
//重写toString方法
public String toString(){
return "name="+name+",color="+color+",sex="+sex;
}
// public String getInfo(){
// return "name="+name+",color="+color+",sex="+sex;
// }
}