Object类

在Java中Object类是所有类的父类,也叫做超类(super Class),当一个类没有明确要继承的父类时,它就默认继承Object类。

Object类的常用方法
  1. equals():判断两个对象的内存地址是否相等。
  2. getClass():获取该类的class对象(class对象在堆内存中是唯一的)
  3. hashCode():获取该对象的hash值(hash值不等同于对象的内存地址,是内存地址+散列算法得到的一个数字)
  4. toString():获取对象的字符串形式
常用方法详解
1. equals()
		Object o = new Object();
		Object o2 = new Object();
		
		System.out.println(o == o2); //判断两个对象的地址是否相等--false
		 
		System.out.println(o.equals(o2)); //判断两个对象地址相等--false
		
		
		//equals()方法的底层源码
//		public boolean equals(Object obj){
//			return (this == obj);  //判断对象地址
//		}
	}
2. getClass()
		Object o = new Object();
		Object o2 = new Object();
		
		//getClass() 获取对象类的class对象。每一个类的class对象都是唯一的
		System.out.println(o.getClass() == o2.getClass()); //所以结果weitrue
		
		System.out.println(o.getClass().getName());
		System.out.println(o2.getClass().getName()); //java.lang.Object  类名
3.hashCode()
	Object o = new Object();
		
	//hashCode() 获取对象的hash值,(hash值不等于内存地址,是内存地址+散列算法计算出来的一个数字)
	System.out.println(o.hashCode()); //366712642
4. toString()
Object o = new Object();
		Object o2 = new Object();
		
		
		//获取对象的字符串形式
		System.out.println(o); //默认会去调对象的toString()方法
		 
		System.out.println(o2.toString()); //java.lang.Object@15db9742
		
		//toString()方法的底层源码
//		public String toString(){
//			
//			java.lang.Object			@		获取对象hash值的十六进制形式
//return  this.getClass().getName() + "@" + Integer.toHexString(this.hashCode());
//		}
Object类使用

​ object类作为所有类的父类/超类,提供了很多方法供子类重写使用。比如String类就重写了Object类的toString()方法。

案例:

public class ObjectDemo1 {

	/**
	 * 重写equals()方法,来比较两个对象的某一个属性是否相同
	 * 
	 * 重写toString()方法,来打印对象的所有属性
	 */
	private String uname;
	private String password;
	private String nickname;

	
	public ObjectDemo1() {
		//无参构造方法
	}
	public ObjectDemo1(String uname, String password, String nickname) {
		this.uname = uname;
		this.password = password;
		this.nickname = nickname;
	}


	public String getUname() {
		return uname;
	}


	public void setUname(String uname) {
		this.uname = uname;
	}


	public String getPassword() {
		return password;
	}


	public void setPassword(String password) {
		this.password = password;
	}


	public String getNickname() {
		return nickname;
	}


	public void setNickname(String nickname) {
		this.nickname = nickname;
	}
	
    //子类重写Object类的equals方法
	@Override
	public boolean equals(Object obj) {
		if(this == obj){
			return true;
		}
		ObjectDemo1 o2 = (ObjectDemo1) obj;
		
	//注意,因为uname是String类型,所以他们这个地方比较使用的equals()是String类重写的equals()方法
		if(this.getUname().equals(o2.getUname())){  
			return true;
		}
		
		return false;
	}
	
    //子类重写Object类的toString方法
	@Override
	public String toString() {
	return 	this.getUname()+"---"+this.getPassword()+"---"+this.getNickname();
		
	}
}


//ObjectDemo2测试类
public class ObjectDemo2 {

	public static void main(String[] args) {
		
		ObjectDemo1 u1 = new ObjectDemo1("bbbaaa","123456","大马猴");
		ObjectDemo1 u2 = new ObjectDemo1("bbbaaa","321321","光头强");
		
		//业务需求假设:判断两个对象的账号是否相等,如果相同,那么就认为是同一个对象
		System.out.println(u1.equals(u2)); //true--- 这里的equals是ObjectDemo1中重写的equals方法
		//打印对象
		System.out.println(u1);//bbbaaa---123456---大马猴
		System.out.println(u2);//bbbaaa---321321---光头强
		
		//注意,打印语句会自动去调用对象的toString()方法,如果没有找到就一直想上寻找,直到Object类的toString方法
	}
}
  • 16
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值