Object 类
Object类是所有类层次结构的根类
所有类都直接或者间接的继承自该类
构造方法:
public Object()
Object类的常用方法:
1 / ------ public int hashCode() :返回该对象的哈希码值 ,哈希值是根据哈希算法计算出来的一个值,这个值与地址有关,但实际不是地址值。可以理解为地址值。
范例:
package cn.itcast_01;
/*
* Object 类
* Object类的方法
* hashCode()返回对象的哈希值
*/
public class hashCodeDemo {
public static void main(String[] args) {
//创建学生对象
Student s = new Student();
s.hashCode(); //s集成了父类Object的hashCode()方法
System.out.println(s); //返回值:cn.itcast_01.Student@15db9742
Student s1 = new Student();
s1.hashCode();
System.out.println(s1); //返回cn.itcast_01.Student@6d06d69c
}
}
2 / ------public final class getClass() :返回此 Object
的运行时类
----------------- Class类的方法:
---------------------------public String getName() :以String 的形式返回此Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
范例:
package cn.itcast_01;
/*
* Object 类
* Object类的方法
* hashCode()返回对象的哈希值
*
* public final class getClass()
* public String getName()
*/
public class hashCodeDemo {
public static void main(String[] args) {
//创建学生对象
Student s = new Student();
s.hashCode(); //s集成了父类Object的hashCode()方法
System.out.println(s); //返回值:cn.itcast_01.Student@15db9742
Student s1 = new Student();
s1.hashCode();
System.out.println(s1); //返回cn.itcast_01.Student@6d06d69c
System.out.println("--------------");
Student s2 = new Student();
Class c = s2.getClass(); //getClass方法返回的是Class类型,用Class接收,返回类名实际返回的是类的对象。
String str = c.getName(); //返回类名实际返回的是类的对象。
System.out.println(str); //返回结果:cn.itcast_01.Student
}
}
3 / -----public String toString() :返回该对象的字符串表示。建议所有子类都重写该方法:把该类的所有成员变量值组成返回即可。
注意:直接输出一个对象的名称,其实就是调用该对象的toString()方法。
范例:
package cn.itcast_02;
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;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
/* @Override
public String toString() {
return "姓名:"+name+"----"+"年龄:"+age;
}*/
}
package cn.itcast_02;
public class toStringDemo {
public static void main(String[] args) {
Student s = new Student();
System.out.println(s.hashCode()); //返回结果:366712642
System.out.println(s.getClass().getName()); //返回结果:cn.itcast_02.Student
System.out.println("-------------------");
System.out.println(s.toString()); //Student [name=null, age=0]
}
}
4 / public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。
equals 比较:
默认情况下比较地址值。比较地址值意义不大,所以要重写方法。
一般用来比较对象的成员变量值是否相同。
String的equals()方法是重写至Object类的,比较的是字符串的内容是否相同
== 比较:
基本类型:比较的是值是否相同
引用类型:比较的是地址值是否相同
package cn.itcast_03;
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;
}
@Override
public boolean equals(Object obj) { //标准的equals方法格式
if (this == obj) {
return true;
}
if (!(obj instanceof Student)) {
return false;
}
Student s = (Student) obj;
return this.name.equals(s.name) && this.age == s.age;
}
}
/*
* public String toString() :
* */
package cn.itcast_03;
public class StudentDemo {
public static void main(String[] args) {
Student s1 = new Student("张无忌", 27);
Student s2 = new Student("张无忌", 27);
System.out.println(s1 == s2); // 返回false
Student s3 = s1;
System.out.println(s3 == s1); //返回true
System.out.println("--------------------");
System.out.println(s1.equals(s2)); //obj = s2; //true
System.out.println(s1.equals(s1)); //true
System.out.println(s1.equals(s3)); //true
Student s4 = new Student("阳顶天",35);
System.out.println(s1.equals(s4)); //flase
}
}
判断对象是否是某个类的对象:
格式:
对象名 instanceof 类名
表示:判断该对象名是否是该类名的一个对象