任何类的直接父类或间接父类数组
对于引用数据类型,打印变量名的时候自动调用toString方法,默认打印的是地址,ide
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); //默认打印的是地址 }
若是不想打印地址,那么就在相应的子类里面重写子类this
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方法时,默认打印的是地址3d
重写toString方法时,打印的是里面的内容code
本质对象
调用(若是是基本数据类型,则比较内容,不是则默认比较地址,例如bject的equals源码以下:)blog
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; }
用途:使一个新对象中有已经创建对象的数据内容(克隆)get
在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 { } } }