Java Obiect类--------11

一、Object类

1.1含义

所有类的基类/超类,一个类没有明确继承的父类,都默认继承Object

1.2 euqals()

判断两个对象内存地址是否相同
public boolean equals(Object obj){
        return (this == obj);

package com.qf.test01;

public class A {
	
	private String str;
	private char c;
	private int i;
	
	public A() {
	}

	public A(String str, char c, int i) {
		this.str = str;
		this.c = c;
		this.i = i;
	}

	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}

	public char getC() {
		return c;
	}

	public void setC(char c) {
		this.c = c;
	}

	public int getI() {
		return i;
	}

	public void setI(int i) {
		this.i = i;
	}
}
package com.qf.test01;

public class Test01 {

	public static void main(String[] args) {
		
		A a1 = new A();
		A a2 = new A();
		System.out.println(a1 == a2);//引用数据类型使用==是比较内存地址是否相等
		System.out.println(a1.equals(a2));
		
		int a = 100;
		int b = 200;
		System.out.println( a == b);//基本数据类型使用==是比较值是否相等
	}
}

1.3 getClass()

获取该类的class对象(class对象作为class文件的访问入口) 

package com.qf.test01;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Test02 {

	public static void main(String[] args) {

		A a1 = new A();
		A a2 = new A();
		
		Class<? extends A> c1 = a1.getClass();//获取A类的class对象
		Class<? extends A> c2 = a2.getClass();//获取A类的class对象
		
		System.out.println(c1 == c2);//true
		
		System.out.println("----------");
		
		//获取该类所有的属性
		Field[] fields = c1.getDeclaredFields();
		for (Field field : fields) {
			System.out.println(field);
		}
		
		System.out.println("----------");
		
		//获取该类所有的构造方法
		Constructor<?>[] constructors = c1.getDeclaredConstructors();
		for (Constructor<?> constructor : constructors) {
			System.out.println(constructor);
		}
		
		System.out.println("----------");
		
		//获取该类所有的方法
		Method[] methods = c1.getDeclaredMethods();
		for (Method method : methods) {
			System.out.println(method);
		}
	}
}

 1.4 hashCode()

获取到对象的hash值(hash值 - 内存地址+散列算法,hash值不等于内存地址) 

package com.qf.test01;

public class Test03 {

	public static void main(String[] args) {
		
		A a1 = new A();
		A a2 = new A();
		
		System.out.println(a1.hashCode());   //获取a1的哈希值
		System.out.println(a2.hashCode());   //获取a1的哈希值
	}
}

 1.5 toString()

获取对象的字符串形式(将对象转换为字符串) 

public String toString(){
        //getClass().getName() - 获取class对象的名字(类的全路径-报名+类名)
        //Integer.toHexString(hashCode()) - 获取对象的hash值的十六进制表示(hash值原本是十进制)
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

package com.qf.test01;

public class Test04 {

	public static void main(String[] args) {
		
		A a1 = new A();
		
		//com.qf.test01.A @ 15db9742
		System.out.println(a1);//打印对象,默认调用toString()
		System.out.println(a1.toString());
	}
}

 二、深入Object的标杆作用

2.1前言 

所有的类都直接或间接继承Object,所以所有的类都能使用Object里的方法 

2.2Object - equals():

含义:比较两个对象的内存地址是否相同
标杆作用:比较两个对象是否相同,但是不同的子类判断两个对象是否相同规则是不一样的,所以在子类中重写equals方法即可 

package com.qf.test02;

public class User {
	
	private String username;
	private String password;
	private double money;
	
	public User() {
	}

	public User(String username, String password, double money) {
		this.username = username;
		this.password = password;
		this.money = money;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

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

	public double getMoney() {
		return money;
	}

	public void setMoney(double money) {
		this.money = money;
	}
	
	@Override
	public boolean equals(Object obj) {
		//先判断两个对象的地址是否相同,地址都相同,证明是同
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值