Java核心技术30讲

1,原始类型和包装类

       自动装箱开箱,类似java自动进行转换的语法糖。发生在编译阶段,保持生成字节码一致。
使用包装类一般是:参与泛型类的调用,或者需null表示“空值”用。

Integer a = 666; -----------系统为我们执行了: Integer a= Integer.valueOf(666);
int b = a; ---------------------系统为我们执行了: int b= a.intValue();

2,JVM内存模型

:存放对象实例,几乎所有的对象实例都在这里分配内存。存储单位(新生代(Eden)<老年代)
方法区:元数据;运行时常量池、静态域。存储,堆外内存。


JAVA虚拟机栈:Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息 ,存储局部变量。2
本地方法栈:本地方法栈则是为虚拟机使用到的Native方法服务。
程序计数器:当前线程所执行的字节码的行号指示器

3,抽象类和接口

面向对象、设计模式:封装继承多态。
接口:API,基础类库重要接口。之前不能实现接口,java8后可以实现。java9后更是提供了default方法。
抽象类:不能实例化,abstract修饰,代码重用。通过继承提取相同点。

java不允许多继承,可是实现多个接口。封装:安全,隐藏简化。继承:代码复用基础机制。多态:重写重载 、向上转型。

4,设计模式-SOLID原则。

SRP 单一职责:类和对象最好一个职责,如果多个责任考虑拆分。
OCP 开放封闭:对扩展开放,对修改关闭。保证平滑阔展性,别加一个功能就要改别的代码。
LSP 里氏替换:子类替换父类不产生错误,子类可以扩展父类的功能,但不能改变父类原有的功能。
ISP 接口隔离:如果接口中方法太多,子类很难。没意义的方法也要实现?所以拆分接口。
DIP 依赖反转:实体依赖于抽象而不是实现。高层次模块不依赖低层次模块,保证产品代码适量耦合度。

 

你可能感兴趣的:(学习历程)