黑马程序员---Java基础---Object类

时间:2022-09-16 15:41:19

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 


一、Object类的概述

类Object是类层次结构的根类,每个类都使用Object作为超类。所有对象(包括数组)都实现这个类的方法。一个任意类都直接或间接继承Object类。

有构造方法:public Object() 无参构造。


二、Object类的方法


1、hashCode()方法

public int hashCode()   返回该对象的哈希码值。

package cn.hebei.sjz_Object;

/*
* Object类的方法
*/
public class Demo {
public static void main(String[] args) {
Person p = new Person();
Person p1 = new Person();
Person p2 = new Person();
Person p3 = p;

//hashCode()方法
System.out.println(p.hashCode());//1326857436
System.out.println(p1.hashCode());//1022736404
System.out.println(p2.hashCode());//671631440
System.out.println(p3.hashCode());//1326857436
}
}

不同对象的哈希码值一般来说不会相同,同一对象的哈希码值相同,不是对象的实际地址值。


2、getClass()方法

public final Class getClass()   返回此Object的运行时类。

package cn.hebei.sjz_Object;

/*
* Object类的方法
*/
public class Demo {
public static void main(String[] args) {
Person p = new Person();

//getClass()方法
Class c = p.getClass();
System.out.println(c.getName());//cn.hebei.sjz_Object.Person
}
}

通过Class类中的public String getName()方法,以String的形式返回此Class对象所表示的实体(类、接口、数组类、基本类型或void)名称,拿到的是带包名的类名。

3、toString()方法

public String toString()   返回的是该对象的字符串表示。

package cn.hebei.sjz_Object;

public class Student {
private String name;
private int age;

public Student() {
super();
// TODO Auto-generated constructor stub
}

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

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
<span style="white-space:pre"></span>重写toString方法
public String toString(){
return "Student[name= " + name + ",age= " + age + "]";
}
}
package cn.hebei.sjz_Object;/* * toString()方法 */public class Demo1 {public static void main(String[] args) {Student s = new Student("xu", 17);System.out.println(s.toString());//Student[name xu,age17]}}

4、equals()方法

public boolean equals(Object obj)    指示其他某个对象是否与此对象相等。

package cn.hebei.sjz_Object;

/*
* equals()方法
*/
public class Demo2 {
public static void main(String[] args) {
Student s = new Student("xu", 23);
Student s1 = new Student("zhao", 24);
Student s2 = s;
Student s3 = new Student("xu", 23);

System.out.println(s == s1);// false
System.out.println(s == s2);// true
System.out.println(s == s3);// false

System.out.println(s.equals(s1));// false
System.out.println(s.equals(s2));// true
System.out.println(s.equals(s3));// false
}
}

equals默认比较的是地址值,但是地址值==就可以做比较了,比较地址值是没有意义的,子类要重写该方法。只有引用数据类型能用equals。