1.类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

2.hashCode()方法

  返回该对象的哈希值。一般情况下,该方法会根据对象的地址值来计算。

  不同的对象hashCode()一般来说不会相同,但同一个对象的hashCode值肯定一样。

  不是对象的实际地址值,可以理解为逻辑地址值。

java_13.2 Object 随笔 第1张

package demo1;


public class Demo1 {
	public static void main(String[] args) {
		Student s1 = new Student("张三", 23);
		int hashcode = s1.hashCode();
		System.out.println(hashcode);
 	}
}

 java_13.2 Object 随笔 第2张

3getClass()方法

  返回Object的运行时类

  可以通过Class的一个getName()方法来获得类的全名。

java_13.2 Object 随笔 第3张

package cn.smx.demo1;


public class Demo1 {
	public static void main(String[] args) {
		Student s1 = new Student("张三", 23);
		Class clazz = s1.getClass();
		String str = clazz.getName();
		System.out.println(str);
 	}
}

 java_13.2 Object 随笔 第4张

4.toString()方法

package cn.smx.demo1;


public class Demo1 {
	public static void main(String[] args) {
		Student s1 = new Student("张三", 23);
		String s = s1.toString();
		System.out.println(s);
 	}
}

 java_13.2 Object 随笔 第5张

为了更好的获得属性值,我们会重写toString()方法。在eclipse中有快捷键生成toString()方法。右击-->source-->generate toString()..-->select all.

  

    public static void main(String[] args) {
		Student s1 = new Student("张三", 23);
		System.out.println(s1);
 	}

 5.equals()方法

  比较对象的地址值

java_13.2 Object 随笔 第6张

package demo1;


public class Demo1 {
	public static void main(String[] args) {
		Student s1 = new Student("张三", 23);
		Student s2 = new Student("张三", 23);
		boolean b = s1.equals(s2);
		System.out.println(b);
 	}
}

 java_13.2 Object 随笔 第7张

  没有什么意义,一般来比较对象中的属性值。属性值相同,我们认为是同一个对象。

  重写equals方法。

    public boolean equals(Object obj) {
		if(this==obj) {
			return true;
		}
		if(obj==null) {
			return false;
		}
		if(obj instanceof Person) {
			Person p = (Person)obj;
			if(this.age==age&&this.name==name)
				return true;
		}
		return false;
	}

 主函数:

    public static void main(String[] args) {
		Person p = new Person("zhangsan",23);
		Person p1 = new Person("zhangsan",23);
		boolean b = p.equals(p1);
		System.out.println(b);
		System.out.println(p);
		System.out.println(p1);
    }

 java_13.2 Object 随笔 第8张

 

  ==和equals都可以作比较

  区别是:1.==号是比较运算符,既可以比较基本数据类型(比较值),又可以比较引用数据类型(比较地址值)。

      2.equals方法在没重写之前比较的是地址值,底层依赖==号。我们需要重写equals方法,比较对象中的属性值。只能比较引用数据类型。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄