Java.面向对象.内存管理

一.内存管理:

       1.堆:

              ①存储new出来的对象(包括实例变量)

              ②成员变量的生命周期:

                         创建对象是存在堆中,对象回收时一并消失.

              ③垃圾:

                         没有任何引用指向的对象
                         垃圾回收器不定时到内存中清扫垃圾,
                         回收过程是透明的,不一定发现垃圾就立刻回收,
                         调用System.gc()可以建议JVM尽快调度GC来回收.

               ④内存泄漏:

                                 不再使用的内存没有被及时的回收
                                  建议:不再使用的对象需及时将引用设置为null.

       2.栈:

                 ①存储正在调用中的方法中的所有局部变量(包括参数)
                 ②调用方法时,会在栈中为该方法分配一块对应的栈帧,
                     栈帧中存储方法中所有局部变量(包括参数)
                     方法调用完后,栈帧被清除,局部变量一并失效
                 ③局部变量的生命周期:
                     调用方法时存在栈中,方法完之后与栈帧一并消失.


      3.方法区:

                 ①存储.class字节码文件(包括方法)
                 ②方法只有一份,能过this来区分具体的调用对象

      4.package:
                 ①避免类名冲突
                 ②包名可以有层次结构,同包中的类不能同名
                 ③类的完全限定名: 包名.类名
                 ④建议:包名所有字母都小写


      5. import:
                 同包中的类可以直接访问,不同包中的类不能直接访问,只有如下两种方式:
                          ①先import声明类,再访问类----建议
                          ②类的完全限定名-------太繁琐,不建议


      6.访问控制修饰符:
                 ①public:公开的,任何类
                 ②private:私有的,本类
                 ③protected:受保护的,本类、子类、同包类
                 ④默认的:什么也不写,本类、同包类
                 类的访问修饰: public和默认的
                 类中成员的访问修饰: 如上4种都可以


       7.static:
                1.静态变量:
                        ①由static修饰
                        ②属于类,存在方法区中,只有一份
                        ③常常通过类名.来访问
                        ④何时用:所有对象共享的数据(图片、音频、视频等)
                2.静态方法:
                        ①由static修饰
                        ②属于类,存在方法区中,只有一份
                        ③常常通过类名.来访问
                        ④静态方法没有隐式的this传递,静态方法中不能直接访问实例成员
                        ⑤何时用:方法的操作仅与参数相关而与对象无关
               3.静态块:
                        ①由static修饰
                        ②类被加载期间自动执行,因类只被加载一次,所以静态块也只执行一次
                        ③何时用:常常用于初始化静态资源(图片、音频、视频等)


       8.final:

              最终的、不可变的------单独应用几率不高
            ①修饰变量:变量不可被改变
            ②修饰方法:方法不可被重写
            ③修饰类:类不可被继承


         9.static final

               常量: 应用率高
              ①常量必须声明同时初始化
              ②通过类名点来访问,不可被改变
              ③建议:常量名所有字母都大写,多个单词用_分隔
              ④编译器在编译时将常量直接替换为具体的值,效率高


        10.抽象方法:
              ①由abstract修饰
              ②只有方法的定义,没有方法的具体实现(连{}都没有)


        11.抽象类:
              ①由abstract修饰
              ②包含抽象方法的类必须是抽象类
                不包含抽象方法的类也可以声明为抽象类----我乐意
             ③抽象类不能被实例化
             ④抽象类是需要被继承的,子类:
                       重写所有抽象方法------常用
                       也声明为抽象类--------不常用
             ⑤抽象类的意义:
                       封装子类共有的属性和行为-------代码复用
                      为所有子类提供一种统一的类型---向上造型
                      可以包含抽象方法,为所有子类提供了统一的入口,每个子类的实现不同,但入口是一致的


         12.接口:
              ①是一个标准、规范----制定方
                  遵守了这个标准就能干某件事---------API
              ②是一种数据类型(引用类型)
              ③由interface定义
                 只能包含常量和抽象方法
              ④接口不能被实例化
              ⑤接口是需要被实现/继承的,实现类/子类:
                 必须重写接口中的所有抽象方法
              ⑥一个类可以实现多个接口,用逗号分隔
                  若又继承又实现时,应先继承后实现
             ⑦接口可以继承接口









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值