概念:在一个类的内部再定义一个完整的类
class Outer{//Outer.class文件 class Inner{//Outer$Inner.class文件 } }
特点:
成员内部类
成员内部类等级和实例变量、实例方法同级别
在类的内部定义,与实例变量、实例方法同级别的类
外部类的一个实例部分,创建内部类对象时,必须依赖外部类对象
Outer out =new Outer(); Outer.Inner in =out.new Inner(); //Outer.Inner in=new Outer().new Inner();
当外部类、内部类存在重名属性时,会优先访问内部类属性(在同名情况访问外部类属性:Outer.this.name)
成员内部类不能定义静态成员
静态内部类
静态内部类等级和外部类相同
Outer.Inner inner=new Outer.Inner(); Outer.Inner.show();
局部内部类
必须在该方法中创建局部类对象
匿名内部类
Usb usb=new Usb(){ @Override public void servise() { System.out.println("风扇开始正常工作!"); } };//使用匿名内部类实例化(相当于创建了一个局部内部类) usb.servise();
finalize()
当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。getClass()
返回此 Object
的运行时类。hashCode()
返回对象的哈希码值。 (哈希码值可以理解为对象的地址(实际就是10进制地址换成了16进制地址))notify()
唤醒正在等待对象监视器的单个线程。toString()
返回对象的字符串表示形式。wait(long timeout)
导致当前线程等待,直到另一个线程调用 notify()
方法或该对象的 notifyAll()
方法,或者指定的时间已过wait(long timeout, int nanos)
导致当前线程等待,直到另一个线程调用该对象的 notify()
方法或 notifyAll()
方法,或者某些其他线程中断当前线程,或一定量的实时时间。getClass()方法
hashCode()方法
public int hashCode(){}
返回该对象的哈希码值
哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值
一般情况下相同对象返回相同的哈希值
toString()方法
(这里的覆盖指重写,从父类继承来的方法满足不了自己的需求就进行重写)
equals()方法
s4.equals(s5);//s4是指this,s5是指obj //在Object 类中没有重写equals()方法,所以比较的是地址
equals()方法覆盖步骤
finalize()方法
包装类:基本数据类型所对应的引用数据类型
Object可统一所有数据,包装类的默认值是null