持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,[点击查看活动详情]
内部类
当我们在描述一个事物时,发现该事物中又存在另一个事物的时候。把当前的事物称为外部类,另一个事物称之为内部类。
调用内部类的成员
创建内部类的对象。(内部类是外部类的非静态成员,所以内部类这个类想要存在的前提是创建外部类对象)“new Outter().new Intter(); ” Outter.Intter intter=new Outter().new Intter();
区分内部类成员和外部类成员
用this。内部类用:this,外部类用:外部类(这个类的).this(的对象).num(的num)。
调用内部类的静态成员
静态的东西是优先对象加载进方法区的。变量在一个非静态的类中,必须先创建内部类,变量才存在,与上面冲突。
如果内部类有静态,那内部类必须是静态的。静态不能调用非静态,内部类就不能调用非静态的外部类。可以访问内部类中非静态。\
Outter.intter.num
Object类解析
所有类的最终父类都是Object.
native本地函数:就是指当前的方法内容由计算机具体底层来实现-c/c++语言。
静态代码块:随着类的加载只执行一次。
getClass:字节码的类,.class文件当成一个对象去看待,Class就是该对象的类。Class是java类描述的一个类。
public native int hashCode();功能:获取当前对象的哈希值(在哈希表中的存储位置)
public final native Class<?> getClass();功能:获取当前类的信息(当前对象的类的对象-Class类)
private static native void registerNativer();Object一旦被加载进方法区则执行注册本地方法registerNativer()。在底层去创建一个Object对象并对类进行一定程度上初始化
public boolean equals(Object obj){return (this==obj);}功能:当前对象this和传入对象obj是否相等。
public String toString(){return 全类名+@+16进制哈希值的字符串形式}:功能:当我们直接打印一个对象时,打印的内容默认是toString返回的内容。堆内存中地址的16进制。
public final native void notify();对象的克隆。多线程:唤醒线程
protected void finalize()throws Throwable{}:当对象被垃圾收集器回收时,会执行。
==与equals的区别:
==比较的永远是地址,equals在Object中与==一样,也可以由子类决定。
final
final修饰变量,表示该变量所存储的数据的地址不能被改变
final修饰函数:表示该函数不能被重写
final修饰类:表示该类不能被继承。