咸鱼带你学Java—Object类的使用

目录

一、说明

二、Object类的主要结构

三、Object的使用

1.equals()方法

a.介绍

b.重写规则

2.toString()方法

a.介绍

b.重写


一、说明

  • Object类是所有Java类的根父类
  • 如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 
public class ObjectTest {
	
	public static void main(String[] args) {
		
		Person p=new Person();
		//toString()为Object类的方法,可说明Person是继承于Object类的
		System.out.println(p.toString());
	}

}
class Person{
	
}

二、Object类的主要结构

Object类的结构大家可以查看JDK,下图是几个常用的构造器和方法,还有一些方法描述

还有 getClass() 、clone() 、finalize()、wait() 、 notify()、notifyAll()方法

三、Object的使用

下面将主要介绍equals()、toString()方法,其他的方法将在后面的学习中讲到。

1.equals()方法

a.介绍

所有类都继承了Object,也就获得了equals()方法。equals()方法只能比较引用类型,其作用与“==”相同,比较是否指向同一个对象。【有兴趣的同学可查看源代码】equals()方法还可以重写,下面将会讲到。

格式:obj1.equals(obj2)

public class ObjectTest {
	
	public static void main(String[] args) {
		
//		Person p=new Person();
//		
//		//toString()为Object类的方法,可说明Person是继承于Object类的
//		System.out.println(p.toString());
		//使用equals方法
		String str1="Tom";
		String str2="June";
		System.out.print(str2.equals(str1));//flase
		
	}

}

b.重写规则

当用equals()方法进行比较时,对类File、String、Date及包装类 (Wrapper Class)来说,是比较类型及内容而不考虑引用的是否是同一个对象; 因为在这些类中重写了Object类的equals()方法。 当自定义使用equals()时,可以重写。用于比较两个对象的“内容”是否都相等。

重写规则:【重写的equals()方法,可以直接通过eclipse调用】

  • 对称性:如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是 “true”。
  • 自反性:x.equals(x)必须返回是“true”。
  • 传递性:如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”, 那么z.equals(x)也应该返回是“true”。
  • 一致性:如果x.equals(y)返回是“true”,只要x和y内容一直不变,不管你 重复x.equals(y)多少次,返回都是“true”。
  • 任何情况下,x.equals(null),永远返回是“false”; x.equals(和x不同类型的对象)永远返回是“false”。 
public class ObjectTest {
	
	public static void main(String[] args) {
		
		Person p1=new Person("Tom","10001");
		Person p2=new Person("Tom","10001");
		Person p3=new Person("June","10002");
		System.out.println(p1.equals(p2));//true
		System.out.println(p1.equals(p3));//false
		
		
		//toString()为Object类的方法,可说明Person是继承于Object类的
		//使用重写后的toString()方法
//		System.out.println(p.toString());//Person{name=Tom	id=10001}
		//使用equals方法
//		String str1="Tom";
//		String str2="June";
//		System.out.print(str2.equals(str1));//flase
//		
	}

}
class Person{
	
	public String name;
	public String id;
	
	public Person(String name,String id) {
		this.id=id;
		this.name=name;
	}
	
	//重写toString方法
	@Override
	public String toString() {
        return "Person{name="+name+"\tid="+id+"}";
    }
	//系统自动生成的equals()方法
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	
}

2.toString()方法

a.介绍

 toString()方法在Object类中定义,其返回值是String类型,返回类名和它的引用地址。【有兴趣的同学可查看源代码】toString()也可以进行重写,下面将会讲到。

格式:obj.toString()

public class ObjectTest {
	
	public static void main(String[] args) {
		
		Person p=new Person();
		
		//toString()为Object类的方法,可说明Person是继承于Object类的
		//使用toString方法
		System.out.println(p.toString());//ClassTest.Object.Person@10dea4e
		//使用equals方法
//		String str1="Tom";
//		String str2="June";
//		System.out.print(str2.equals(str1));//flase
//		
	}

}
class Person{
	
}

b.重写

像String、Date、File、包装类等都重写了Object类中的toString()方法。使得在调用对象的toString()时,返回"实体内容"信息自定义类也可以重写toString()方法,当调用此方法时,返回对象的"实体内容"

public class ObjectTest {
	
	public static void main(String[] args) {
		
		Person p=new Person();
		p.name="Tom";
		p.id="10001";
		
		//toString()为Object类的方法,可说明Person是继承于Object类的
		//使用重写后的toString()方法
		System.out.println(p.toString());//Person{name=Tom	id=10001}
		//使用equals方法
//		String str1="Tom";
//		String str2="June";
//		System.out.print(str2.equals(str1));//flase
//		
	}

}
class Person{
	
	public String name;
	public String id;
	//重写toString方法
	@Override
	public String toString() {
        return "Person{name="+name+"\tid="+id+"}";
    }
	
}

上一篇:咸鱼带你学Java—面向对象特征之三:多态性

下一篇:咸鱼带你学Java—包装类(Wrapper)的使用

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值