面向对象
面向对象
内存管理
-
内存管理: 由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()快。对于两个引用变量,只用判断引用是否相等,也就可以判断实际值是否相等
-

浙公网安备 33010602011771号