Object类

Object类
在Java.lang包中,类Object是类层次结构当中的根类。
,每一个类像Person、Peolple、Student、Animal…都是Object类的子类,所有的对象(包括数组)都实现类Object的子类。


创建学生标准类

public class Student{
 private String name ;
 private int age;
 public String getNmae(){
   return name;
}
public void setName(String name){
    this.name=name;
 }
 public int getAge(){
   return age;
}

public void setAge(int age){
   this.age=age;
}

public Student(){

}
public Student(String name ,int age){
super();
this.name=name;
this.age=age;
}

//想要查看对象中的信息,需要重写toString方法

@Override
public String toString(){
     return "Student[name="+name+",age="+age+"]";
}
  
}
public class Demo01object {

	
	public static void main(String[] args) {
		// ctrl+1   回车  快速获取返回值
		Student student = new Student("张三",20);
		
		System.out.println(student);
//com.zhiyou100.api.object.Student@bd916 逻辑地址值
//当重写之后,系统会认为你要查看的是该对象的成员信息,必然调用的是toString()方法
// toString  不可改变,否则认为是别的方法
   System.out.println(student.toString());
  //Student [name=张三, age=20]
  
  Student student1 = new Student("小王",20);
  Student student2 = new Student("小王",20);
  //让s1和s2作比较
		boolean result= student1.equals(student2);
		if(result) {
			System.out.println("s1和s2是同一个对象");
			System.out.println(student1.hashCode());
			System.out.println(student2.hashCode());
		}else {
			System.out.println("s1和s2不是同一个对象");
		}
 //   s1和s2是同一个对象


		}
		

Object类中的equals方法,默认比较的是两个对象的地址值,没什么意义。所以我们需要重写equals方法,比较两个对象的成员信息(name,age)
但是伴随着问题的出现
隐含着一个多态,弊端是无法使用子类独有的内容。需要向下转型,有可能转型失败,抛出异常。解决办法:使用instanceof做类型判断

@Override
public boolean equals(Object obj){
 if(obj == null){
   return false;
  }
  if(this == obj){
  return true;
  }
  // 比较的是方法的调用者和方法的参数对象
  //  == 此时比较的是地址
  if(obj  instranceof Student){
   Student student=(Student) obj;
   // 比较两个对象的成员变量值是否相等
boolean result = this.name.equals(student.getName()) && this.age==student.getAge();
return result;
  }
  //如果obj不属于Student类型,直接return false
  
     return false
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值