学习Java简单整理笔记--Day13

一、内部类
1,定义:
    在类中定义一个类
    class  S{
        class B{

        }
    }
    S:外部类
    B:内部类
2,原因
            内部类是为了补充外部类的功能而产生的

3,分类
    1,成员内部类
        定义:在类中、方法以外定义一个类
        类中有:
            代码块,属性,普通方法,构造函数,抽象方法【静态相关的都不能有】
            
        如何创建对象:
            外部类类名 . 内部类类名    对象名  =  外部类对象 . new  内部类类名(实参列表);
        注意:
            内部类所在的外部类的方法中创建内部类对象
            普通方法:因为里面有this,所以可以直接创建
            静态方法:因为不能使用this与super,所以需要先创建外部类对象,在创建内部类对象
        当内部类属性与外部类属性重名时如何区分:
            1,this.属性名:内部类属性
            2,外部类类名.this.属性名:外部类属性

        当内部类方法与外部类方法重名时如何区分:
            1,this.方法名(实参列表):内部类方法
            2,外部类类名.this.方法名(实参列表):外部类方法

    2,静态内部类
        定义:在类中、方法以外定义一个类【给成员内部类中static修饰】
        类中有:
            外部类有的,内部类都有
        如何创建对象:
            外部类类名 . 内部类类名  对象名 = new  外部类类名 . 内部类类名(实参列表);
        注意:
            内部类所在的外部类的方法中创建内部类对象,直接创建

        当内部类属性与外部类属性重名时如何区分:
            1,this.属性名:内部类属性
            2,内部类类名.属性名:内部类静态属性
            3,外部类类名.属性名:外部类静态属性
            4,注意:
                静态内部类中不能使用外部类非静态成员(非静态属性与非静态方法)
    3,局部内部类
        定义:在类中的方法中定义一个类
        类中有:
            非静态属性,方法,代码块,构造函数
        如何创建对象:
            内部类类名  对象名 = new  内部类类名(实参列表);
        注意:
            在该类方法中定义该类内部类后,直接创建
            只能在该方法中创建
        当内部类属性与外部类属性重名时如何区分:
            1,this.属性名:内部类属性
            2,外部类类名.this.属性名  :外部类属性

    4,匿名内部类(重点+难点)
        定义:没有类名的内部类
        优点:
            便于书写
        缺点:
            1,一个匿名内部类只能创建一个对象
            2,每个匿名内部类都会生成一个class文件
            3,导致代码混乱,不易阅读
         总结:
            父类名/接口名   对象名  =  new  父类名/接口名(){
                属性
                方法【重写的方法/特有的方法】
                无构造函数,因为没有内部类类名
            }
        
二、Object类
1,作用:所用类的父类
    1. 多态  --->所有的类的对象都可以转换为Object对象
    2. 继承  --->所有的类都拥有Object提供的属性和方法
2,方法:
    toString():将对象转换为字符串
        Object提供的该方法是返回对象所属的类的路径@对象的哈希码值(16进制的)
        打印对象时,默认会调用对象的toString方法
        所以重写toString方法,可以让打印对象时,打印的是对象的属性值,以便于观察
    hashCode():获取对象的哈希码值
    equals():
        Object提供的该方法是比较两个对象内存地址是否相同
    getClass():反射时讲
    notify():线程间通讯, 随机唤醒一个调用该方法的对象,作为锁对象的线程
    notifyAll():线程间通讯,唤醒所有调用该方法的对象,作为锁对象的线程
    wait():线程间通讯,让当前线程进入无限期休眠
    finalize():当对象所在的堆内存被GC回收时,由JVM调用该方法
            
三、System类
1,概念:
    系统
2,常用方法:
    1,作用 : 拷贝数组
    public static void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);
        参数1:原数组
        参数2:开始位置(下标的位置)
        参数3:新数组
        参数4:新数组的开始位置(下标的位置)
        参数5:拷贝的数据个数
    
    2,作用 : 结束程序
            public static void exit(int status)
    参数为0正常退出,非0,不正常退出
    
    3,作用 :  调用java垃圾回收机制(GC)
            public static void gc()
    调用时机:
        1,当内存快满时,由JVM自动调用
        2,使用System.gc()手动调用垃圾回收机制
        
    4,作用 : 获取当前时间与1970年1月1日00:00:00的毫秒值(格林威治时间)
            public static native long currentTimeMillis();
    
    5,重写equals方法
        作用:判断两个对象是否相同
        @Override
        public boolean equals(Object obj) {
            //1,判断调用该方法的对象与传入的对象内存地址是否相同
            if (this == obj) {
                return true;
            }
            //2,判断传入的对象是否属于该类的对象
            if (obj instanceof Dog) {
                //3,将传入的对象转换为该类对象
                Dog dog = (Dog)obj;
                //4,使用调用该方法的对象的属性与传入的对象的属性进行一一比较
                if ( this.getName().equals(dog.getName() )
                    && this.getSex().equals(dog.getSex() )
                    && this.getType().equals(dog.getType() )
                    && this.getColor().equals(dog.getColor()) ) {
                    return true;
                }
            }
            return false;
        }
四、Arrays类

1,作用 :
            集合工具

2,常用方法:
      排序:
           public static void sort(数组)
      将数组转换为特定格式的字符串
           public static String toString(数组)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值