-----------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。