Object类:
在Java中所有的类都有一个公共的父类就是Object类,一个类只要没有明显的继承一个类,则肯定是Object类的子类。
Object类中的主要方法:
public Object() 构造方法
publicboolean equals(Object obj) 对象比较
publicint hashCode() 取得Hash码
publicString toString() 对象打印时调用
<pre name="code" class="java"><pre name="code" class="java">public class Test {//继承了Object类
}
public class ObjectDemo1 {
public static void main(String[] args) {
Test d= new Test();//实例化Demo对象
System.out.println("不加toString()输出:"+d);
System.out.println("加toString()输出"+d.toString());
}
}
以上代码结果说明:加不加toString()功能都是一样的,证明了对象在打印的时候一定会调用toString()方法,是默认调用的。
<pre name="code" class="java">public class Person {
private String name;// 定义name属性
private int age;// 定义age属性
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "姓名:" + this.name + ":年龄:" + this.age;
}
}
public class ObjectDemo2 {
public static void main(String[] args) {
Person p = new Person("丫蛋",22);
System.out.println(p);
}
}
equals方法:
1. equals()方法的主要功能是进行对象的比较操作
2. String本身也是Object类的子类,所以已经覆写了此方法
<pre name="code" class="java">public class Person {
private String name;// 定义name属性
private int age;// 定义age属性
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 重写equals方法
public boolean equals(Object obj) {
if (this == obj) {// 地址相等
return true; // 表示为同一个对象
}
if (!(obj instanceof Person)) {// 不是Person对象
return false;
}
Person p = (Person) obj;// 向下转型
if (p.name.equals(this.name) && p.age == this.age) {
return true;// 依次比较内容
} else {
return false;
}
}
}
<pre name="code" class="java">public class ObjectDemo3 {
public static void main(String[] args) {
Person p1 = new Person("丫蛋", 18);
Person p2 = new Person("丫蛋", 22);
System.out.println(p1.equals(p2)?"是同一个人":"不是同一个人");
System.out.println(p1.equals("hello")?"是同一个人":"不是同一个人");
}
}
Object类是所有类的父类,所有类的对象都可以使用Object接收,Object类不光可以接收对象,还可以接收任意的引用数据类型(类、接口、数组)
使用Object接收接口实例:
<pre name="code" class="java">public interface A {
public String getInfo();
}
<pre name="code" class="java">public class B implements A{
@Override
public String getInfo() {//重写接口中的抽象方法
return "丫蛋";
}
}
<pre name="code" class="java">public class ObjectDemo4 {
public static void main(String[] args) {
A a = new B();//向上转型,为接口实例化
Object obj = a ;//使用Object接收,向上转型
A x = (A) obj;//向下转型
System.out.println(x.getInfo());
}
}
使用Object接收数组实例:
<pre name="code" class="java">public class ObjectDemo5 {
public static void main(String[] args) {
int temp[] = { 1, 3, 5, 7, 9 };// 定义数组
Object obj = temp;// 用Object接收数组
//打印数组
print(obj);
}
public static void print(Object o) {
if (o instanceof int[]) {// 判断数组是否为整型数组
int x[] = (int[]) o;
for (int i = 0; i < x.length; i++) {
System.out.println(x[i]);
}
}
}
}
总结:
1. Object类是所有类的父类,只要是引用数据类型都可以使用Object进行接收
2. 对象在进行向下转型之前一定要先发生向上转型,要使用instanceof关键字进行判断
3. toString():对象打印时调用
4. equals():对象在比较时调用
5. String类也是Object类的子类