28 Object类
28 Object类
含义
任何类的直接父类或间接父类
常用操作(被子类重写的方法)
1.toString方法
对于引用数据类型,打印变量名的时候自动调用toString方法,默认打印的是地址,
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
//默认打印的是地址
}
如果不想打印地址,那么就在相应的子类里面重写该方法
public class Student {
private String name;
public Student(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
}
public class TestStudent {
public static void main(String[] args) {
Student student=new Student("张三");
System.out.println(student);
}
}
没有重写toString方法时,默认打印的是地址
重写toString方法时,打印的是里面的内容
2.equals方法
本质
调用(如果是基本数据类型,则比较内容,不是则默认比较地址,例如bject的equals源码如下:)
public boolean equals(Object obj) {
return (this == obj);
}
但String类(final数组)中的equals方法是重写了Object的equals方法,比较是其中每个字符的内容
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
3.clone方法(浅拷贝---只会拷贝引用地址)
用途:使一个新对象中有已经建立对象的数据内容(克隆)
在object类中,clone方法的访问权限是protectd
protected native Object clone() throws CloneNotSupportedException;
子类要想调用clone方法,必须要有以下步骤
1.extends Object
2.且实现Cloneable接口
3.重写(override)clone方法(Alt+Enter快捷键)
4.调用处处理重写clone方法的throws抛出的CloneNotSupportedException异常
public class Student extends Object implements Cloneable{
private String name;
public Student(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class TestStudent {
public static void main(String[] args) {
Student student=new Student("张三");
System.out.println("student学生的信息为: "+student);
//try...catch用来接收调用clone()方法时,通过throws抛过来的异常
try {
Student student1=(Student) student.clone();//想把student对象里面的信息赋值给student1
System.out.println("student1学生的信息为: "+student1);
} catch (CloneNotSupportedException e) {
e.printStackTrace();//打印异常处理的信息
} finally {
}
}
}