龙空技术网

初识java—(三十三)Object类

IT研究僧 172

前言:

如今大家对“java里的object”大体比较看重,姐妹们都想要知道一些“java里的object”的相关知识。那么小编也在网上搜集了一些有关“java里的object””的相关知识,希望看官们能喜欢,各位老铁们一起来学习一下吧!

7.3.1 Object类

Object类是所有类、数组、枚举类的父类,也就是说,Java允许把任何类型的对象赋给Object类型的变量,当定义一个类时没有使用extends关键字为它显示指定父类,则该类默认继承Object类。可以说所有的Java类都是Object的子类,所以任何Java对象都可以调用Object类的方法。

常用方法:

boolean equals(Object obj):判断指定对象与该对象是否相等。

protected void finalize():当系统中没有引用变量指向该对象时,垃圾回收器调用此方法来清理该对象占用的资源。

Class<?> getClass():返回该对象的运行时类。

int hashCode():返回该对象的hashCode值。在默认情况下该方法根据此对象的的地址来计算。

String toString():返回该对象的字符串表示,Object类的toString()方法返回“运行时类名@十六进制hashCode值”格式的字符串。

举例1:

public static void main(String[] args) throws Exception{Object obj = new Object();System.out.println(obj.toString()); // java.lang.Object@de6cedSystem.out.println(obj); // java.lang.Object@de6cedSystem.out.println("======================");System.out.println(obj.getClass()); // class java.lang.ObjectObject obj2 = new Integer(12);System.out.println(obj2.getClass()); // class java.lang.IntegerSystem.out.println("======================");System.out.println(obj.hashCode()); //14576877System.out.println(obj2.hashCode()); //12}
讲解一下Clone方法来克隆一个学生对象,讲解一个浅克隆的问题。以及重写equals方法。

(1) 重写了Student类的equals方法,里边加上条件,写两个学生对象,进行比较一下。

public Boolean equals(Object obj){Student stu = (Student)obj;if(this.age == stu.getAge()){return true;}else {return false;}}

(2) Clone方法。这里讲解一下浅克隆的问题。Student类,Teacher类,Test类。

首先一个问题,在Test类中写一个Student st, 我不可以通过 st直接调用 st.clone();因为使用protected修饰的方法,你可以在子类中访问,不代表在其它的类中可以通过子类的对象进行访问,你这里必须要在Student类中重写Clone方法。

重写完方法后,还必须在Student类中实现Cloneable这个接口,并且这个接口是一个空的接口,这种接口可以叫作是一个标记接口,告诉我们实现该接口的类就可以实现对象的复制了。

看一下克隆对象值的变换问题。

然后再来看一个问题,当我们在Student类中添加了一个Teacher对象的时候,现在我们来克隆一下,看一下Teacher对象的值的变换问题。

标签: #java里的object