Object类与内部类

Object类:
    1 hashCode() 返回对象的整数表示形式(哈希码)
        哈希码默认根据对象的地址计算而来。
        
    2 getClass() 返回对象的实际类型
        用于判断2个对象的实际类型是否相同
        
    3 toString() 返回对象的字符串表示形式
        打印对象会自动调用toString().
        在开发时,为了方便的查看对象的属性值,一般地,都会重写toString()
        
    4 equals(Object o) 判断2个对象内容是否相同 【重点】
        Object类中equals方法默认实现为判断2个引用是否指向同1对象。
        自定义类型要通过equals方法比较内容,必须重写equals,
        内置类型如String已经重写过该方法

    5 finalize() 在对象销毁时自动执行。
        Java中的对象由JVM中的GC(垃圾回收器)自动销毁。
        
        GC是如何判断一个对象是垃圾对象?
            没有引用指向的对象一定是垃圾对象
            
            零引用计数法
            可达性(跟踪)算法
        
        GC何时回收垃圾对象?
            当内存中空间不足时执行
            

            
内部类:
    定义在类内部的类。
    1 可以直接使用外部类的私有成员,而不破坏封装
    2 内部类编译之后生成独立的class文件
    
a 成员内部类(1%)
    ① 成员内部类对象依赖外部类对象 
        Outer outer = new Outer();
        Outer.Inner inner = outer.new Inner();
        
    ② 成员内部类的实例变量和局部变量同名时可以通过 外部类名.this.实例变量 
        访问外部类的实例变量。
    
    ③ 成员内部类中只能定义实例成员,不能定义静态成员
    
b 静态内部类(9%)
    ① 静态内部类中可以定义静态成员也可以定义实例成员
    
    ② 静态内部类中不可以直接使用外部类的实例成员
    
    ③ 静态内部类不依赖外部类对象
        Outer.Inner inner = new Outer.Inner();

c 局部内部类(90%)
    ① 局部内部类作用范围等同于局部变量,从定义处起到所在的代码块结束
    
    ② 局部内部类可以使用外部类的局部变量,但是该变量必须是final的或者是事实最终的。
    
d 匿名内部类(90%)【重点】
    将类的定义、方法的实现、对象的创建合三为一。常用于创建接口实现类对象。
    
    语法:
        接口 引用 = new 接口(){
            //方法实现
        };
        
        父类 引用 = new 父类(...){
            //方法实现
        };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值