Object类
clone()
用于创建对象的副本,是实现对象复制的重要方式
@Override
public clonetest clone() {// 注意返回类型是clonetest而非Objecttry {// 调用Object类的clone()方法,正常情况下clone()方法返回object类return (clonetest) super.clone();//将返回的object类转换为clonetest类,类似于高转低(int)long//super.clone() 的特殊之处在于,它返回的对象本质上就是子类实例,只是临时被当作 Object 类型处理,因此转换是合法的。} catch (CloneNotSupportedException e) {// 如果未实现Cloneable接口,会抛出此异常throw new AssertionError();}
}
toString()
当使用 println()
打印一个对象时,println()
会自动调用该对象的 toString()
方法,并输出其返回的字符串
getClass()
返回运行类
public class getClass {public static void main(String[] args) {getClass A = new getClass();System.out.println(A.getClass());//class com.classlei.getClassObject B = new Object();System.out.println(B.getClass());//class java.lang.Objectint[] i = new int[3];System.out.println(i.getClass());//class [I//引用类型才能newString str = new String();System.out.println(str.getClass());//class java.lang.String}
}
finalize()
已过时
用于清理内存
equals()
即默认判断两个引用是否指向同一个对象(地址相等),而非内容相等。
hasCode()
返回该对象的哈希码值
@Override
public int hashCode() {// 按照规范,重写equals()后应同时重写hashCode()return Objects.hash(id, name);
}
wait()
wait()
方法是 Object
类的重要方法,用于线程间通信,使当前线程进入等待状态,直到其他线程调用同一对象的 notify()
或 notifyAll()
方法将其唤醒。
唤醒方法有
-
notify()
-
notifyAll()
-
其他线程中调用了interrupt中断了该线程
-
时间间隔到了
-
public class wait {@Overridepublic final void wait (long timeout,int nano)throws InterruptedException{} } //无法重写 'wait(long, int)' 无法重写 'java.lang.Object' 中的 'wait(long, int)';被重写的方法为 final
notify()
唤醒在该对象上等待的某个线程
包装类
解决八大基本类型不支持面向对象编程,即不具备对象的特性——不携带属性,没有方法可调用,的问题
基本数据类型以及对应的包装类
byte(Byte)
short(Short)
int(Integar)
long(Long)
char(Character)
float(Float)
double(Double)
boolean(Boolean)
-
自动装箱与拆箱:
-
自动装箱:基本类型自动转换为包装类(如
int i = 10; Integer obj = i;
)。 -
自动拆箱:包装类自动转换为基本类型(如
Integer obj = 10; int i = obj;
)。 -
底层通过包装类的
valueOf()
(装箱)和xxxValue()
(拆箱,如intValue()
)实现。现在都是自动装箱拆箱
-