java学习笔记

1.成员变量和局部变量区别:

        成员变量:在类中方法外    在堆内存    随对象产生和死亡    有默认初值

        局部变量:在方法内            在栈内存    随方法产生和死亡    无默认初始值,需要定义和赋值

2.匿名对象: 没有名字的对象

        应用:1、调用方法,仅仅调用一次;

                    new student().play();

                    2、作为实际参数传递;

                    fun(new student());

3.对象内存图解:


4、类的初始化过程    

    1、加载class文件 

    2、在栈内存为变量名s开辟空间 

    3、在堆内存为对象开辟空间

    4、对对象成员变量默认初始化

    5、对对象成员变量显示初始化

    6、通过构造方法赋值

    7、初始化完毕,地址赋值给堆内存内的s

5、static关键字

    1、随着类的加载而加载

    2、优先于对象存在

    3、被所有对象共享

    4、可以通过类名调用

    注意:static中没有this关键字,静态方法只能访问静态成员变量和静态成员方法

6、static内存图


7、代码块

    1、局部代码块:在方法中出现,限定生命周期,及早释放,提高内存利用率

    2、构造代码块:类中方法外,每次构造都执行,先与构造方法

    3、静态代码块:用于初始化,类加载的时候执行一次

8、继承中的构造方法

    子类中所有构造方法默认访问父类无参构造方法;

    父类中必须有无参构造方法或者通过子类调用带参构造方法;

9、父类私有方法不能重写,子类重写访问权限必须更高;

10、final:最终,可修饰类,方法,变量

    *类:不可以被继承

    *方法:不可以被重写

    *变量:为常量,不能被重新赋值

    *局部变量:基本类型,值不能改变

                        引用类型,地址不能改变

11、多态:同一对象,在不同时刻体现出来的不同状态

            *前提:要有继承关系、要有方法重写、要有父类引用指向子类对象

                    --成员访问特点:

                                            成员变量:编译和访问都看左边;

                                            成员方法:编译看左边,运行看右边;

                                            静态方法:编译和运行都看左边;

            *好处:

                    --提高了代码的维护性;

                    --提高了代码的扩展性;

            *弊端:不能使用子类特有功能  但是可以向下转型后使用

            *A:具体类多态(很少使用)

             B:抽象类多态

             C:接口多态

内存图:


    12、抽象类,用abstract修饰

            包含抽象方法一定是抽象类;抽象类不能实例化;抽象方法不能有方法体;抽象类有构造方法;

            子类是具体类必须重写所有抽象方法;

            成员特点:

                *成员变量:即可以是变量也可以是常量;

                *构造方法:有;用于初始化

                *成员方法:可抽象方法,也可以是非抽象方法

                抽象方法:强制子类要求做的

                非抽象方法:子类继承的事情,提高代码复用性;

    13、接口:

            接口不能实例化,按照多态的方式来实例化;

            接口的子类可以是抽象类,但是没有意义;

            具体类实现接口:要重写接口中所有的抽象方法;

            *成员特点:

                成员变量:接口中的变量默认是静态常量

                构造方法:没有构造方法

                成员方法:默认public抽象方法

    14、类与类、类与接口、接口与接口的关系

                类与类:继承,只能单继承

                类与接口:实现关系,可以单实现,多实现,还可以在继承一个类的同时实现

                接口与接口:继承,可以多继承和单继承。

    15、抽象类和接口的区别:

                1、成员区别:

                        *抽象类:

                                    成员变量:可以变量可以常量 

                                    构造方法:有

                                     成员方法:可以抽象可以非抽象

                        *接口:

                                    成员变量:静态常量

                                    构造方法:无

                                    成员方法:只能是抽象

                2、关系区别:       

                       类与类:继承,只能单继承

                       类与接口:实现关系,可以单实现,多实现,还可以在继承一个类的同时实现

                       接口与接口:继承,可以多继承和单继承。

                3、设计理念区别:

                        抽象类:定义的是继承体系的共性功能

                        接口:定义继承体系的扩展功能

    16、形式参数

                具体类:该类对象

                抽象类:子类对象

                接口:实现了该接口的类的对象

    17、返回值类型

                    类:返回该类的对象

                    抽象类: 返回抽象类的子类对象

                    接口:返回实现了该接口的类的对象

    18、package,import,class有顺序,p>i>c

    19、权限修饰符


    20、内部类

            特点:1、可以访问外部类成员,包括私有

                      2、外部类要访问内部类,必须创建对象;

            

            内部类位置:1、成员位置:成员内部类

                                            被静态修饰后 外部类名.内部类名 对象名 = new 外部类名.内部类名();

                                2、局部位置:局部内部类

                                            A:可以直接访问外部类成员;

                                            B:在局部位置,可以创建内部类对象,通过对象调用内部类方法来使用局部内部类功能;

                                            *局部内部类访问局部变量必须用final修饰,因为局部变量随着方法调用完毕就消失,

                                             而局部对象不会立即消失,为了让数据继续使用,必须定义为final类。

    21、匿名内部类:

         前提:存在一个类或者接口

         格式: new 类名或者接口名() {重写方法;}  

         本质:子类或者接口的实现类的匿名对象;

    22、String StringBuffer StringBuilder的区别

            String是内容不可变得,后两者内容可变

            StringBuffer线程安全、效率低,StringBuilder线程不安全、效率高

            String作为形参传递和基本类型一样

    23、正则表达式

            字符:

                    x 字符x

                    \\ 反斜杠字符

                    \r 回车

            字符类:

                    [abc]         a、b或者c,ab不行

                    [^abc]        除了a、b、c以外的任意字符

                    [a-zA-Z]     所有英文字母

                    [0-9]           所有0-9字符

                    [1-9]{14}     1-9,一共出现4-14次

             预定义字符:

                    .        所有字符

                    \d     0-9

                    \D    非数字

                    \w    单词字符:[a-zA-Z_0-9] 

            边界匹配器:

                ^    行的开头

                $    行的结尾

                \b  单词边界    不是单词的地方

            数量词:

                X?        X,一次或没有

                X*          X,没有或多次

                X+        一次或多次

                X{n}    恰好n次

                X{n,} 至少n次

                X{n,m} n-m次

    24、finalize:当垃圾回收器确定不存在该对象的更多引用时,由对象的垃圾回收器调用此方法,用于垃圾回收,但不是立即执行。执行System.gc()前,系统会自动调用finalize()方法清楚对象占有的资源;

            

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值