面向对象

面向对象

内存管理

  • 内存管理: 由JVM管理

    • 堆:

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

      • 垃圾: 没有任何引用所指向的对象

        垃圾回收器(GC)不定时到内存中清扫垃圾 回收过程是透明的

        不一定发生垃圾立刻回收 通过调用System.gc()建议JVM调度GC回收

      • 实例变量的声明周期:

        创建(new)对象时存储在堆中 对象被回收时一并回收

      • 内存泄漏: 不再使用的对象没有及时回收 严重的泄漏会导致系统崩溃

        建议: 不再使用的对象应及时将引用设置为null

    • 栈:

      • 存储正在调用的方法中的局部变量(包括方法的参数)

      • 调用方法时 会在栈中为该方法分配一块对应的栈帧 栈帧中存储局部变量(包括方法的参数) 方法调用结束时 栈帧被自动清除 局部变量一并清除

      • 局部变量的声明周期:

        调用方法时存储在栈中 方法调用结束时与栈帧一并被清理

      • 方法区:

        1.存储.class字节码文件(包括静态变量 所有方法)

        2.方法只有一份 通过this来区分具体的访问对象

面向过程和面向对象

​ 面向过程: C 去银行取钱(1.拿卡 2.出门 3.去银行 4.取钱 5.走人)---业务简单

​ 以方法为单位来思考 解决问题的思想

​ 面向对象: Java 造个汽车(车门 轱辘 发动机 玻璃)---业务复杂

​ 以对象为单位来思考 解决问题的思想

面向对象三大特征

  • 封装
    • 类: 封装的是对象的属性和行为
    • 方法: 封装的是具体的业务逻辑功能实现
    • 访问控制修饰符: 封装的是具体的访问权限
  • 继承

    • 作用: 代码复用

      🎈-超类: 所有派生类共有属性和行为

      🎈-接口: 部分派生类共有属性和行为

      🎈-派生类: 派生类特有的属性和行为

    • 单继承 多实现 具有传递性

  • 多态

    • 多态是指允许不同类的对象对同一消息做出响应

      🎈-所有对象都是多态 通过向上造型来体现

      🎈-所有抽象方法都是多态 通过方法的重写来体现

      向上造型 强制类型转换 判断: instanceof

String字符串类型

  • String简述

    • Srting是一个final类 代表不可变的字符序列
    • String在内存中采用Unicode编码 任何字符占用两个字节
    • 字符串是常量 对象内容永远无法改变 但字符串引用可以重新赋值(指向新的对象)
    • String对象的字符内容是存储在一个字符数组value[]中
  • 字符串常量池

    • 如果使用字面量来创建字符串对象时 JVM会检查常量池中是否有该对象

      🎈-若没有 则会创建该字符串对象存入常量池

      🎈-若有 则直接将常量池中的对象(引用)返回 并不会创建新的字符串

    • 常量池是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。
      例如字符串常量池,在编译阶段就把所有的字符串文字放到一个常量池中。

    • 节省内存空间:常量池中所有相同的字符串常量被合并,只占用一个空间。
      节省运行时间:比较字符串时,比equals()快。对于两个引用变量,只用判断引用是否相等,也就可以判断实际值是否相等

posted @ 2022-07-21 18:58  自带光环的宇  阅读(55)  评论(0)    收藏  举报