网站首页 > 基础教程 正文
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@de6ced
System.out.println(obj); // java.lang.Object@de6ced
System.out.println("======================");
System.out.println(obj.getClass()); // class java.lang.Object
Object obj2 = new Integer(12);
System.out.println(obj2.getClass()); // class java.lang.Integer
System.out.println("======================");
System.out.println(obj.hashCode()); //14576877
System.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对象的值的变换问题。
猜你喜欢
- 2024-11-13 Java:Java多线程接口和类 java多线程三种实现方法
- 2024-11-13 jdk源码学习(一):万物皆对象,解密java中所有对象的父类Object
- 2024-11-13 Java类和对象的概念 java类和对象的概念区别
- 2024-11-13 Java开发中常用的框架有哪些? java开发主流框架
- 2024-11-13 Java引用数据类型 Java引用数据类型是什么意思
- 2024-11-13 c#入门教程(二十七)object类型 c# object reference not set
- 2024-11-13 70分享(4):关于Java中的类 java常用的类和方法
- 2024-11-13 从JVM层面带你分析Java的Object类源码第二部分
- 2024-11-13 JAVA你可能不知道的事——继承&抽象类
- 2024-11-13 Java,Objects,常用操作,判空、equals、compare、hash等的使用
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)