文章目录
Java的基本数据类型
- 4类8种:
- 整 型:
byte
、short
、int
、long
- 浮点型:
float
、double
- 布尔型:
boolean
- 字符型:
char
- 整 型:
String底层使用的是char数组还是byte数组?
JDK1.8及以前,底层是char
类型的数组:
JDK1.9及以后,底层是byte
类型的数组:
这是因为开发人员发现人们使用的字符串值是拉丁字符居多,之前使用的
char
数组每一个char
占用两个字节,而拉丁字符只需要一个字节就可以存储,剩下的一个字节就浪费了,造成内存的浪费,gc得更加频繁。因此在jdk9中将String
底层的实现改为了byte
数组。
类加载时的执行顺序
- 父类静态变量、静态代码块
- 子类静态变量、静态代码块
- 父类普通变量、代码块
- 父类构造方法
- 子类普通变量、代码块
- 子类构造方法
面向对象的特性及基本原则
四大特性
封装
封装是保证软件部件具有优良的模块性的基础,目标是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。
带来的好处:
- 提高代码的复用性;
- 隐藏了实现的细节,对外提供一个公共的访问方式;
- 提高了安全性。
继承
在一个现有的类的基础上构建一个新的类,构建的新的类被称作子类,现有的类被称为父类。
优点:
- 提高代码复用性;
- 使类与类之间产生了关系,提供了多态的前提。
缺点:
- 类与类之间产生了耦合,不符合OOP的开发原则。
多态
同一个行为具有多种不同的形态,多态是指子类对象可以直接赋给父类变量(父类引用指向子类对象),但运行时依然表现出子类的行为特征,也就是说,同一类型的对象在执行同一个方法时,可能表现出多种行为特征。
使用多态的三个前提:
- 语法上:父类引用指向子类对象
- 必须存在继承或实现关系
- 必须有方法的重写
优点:
- 隐藏了子类的类型,提高了代码的扩展性。
缺点:
- 只能使用父类共性的内容,无法使用子类独有的功能,存在功能上的限制。
抽象
抽象是通过特定的实例抽取共同特征以后形成概念的过程。它强调主要特征,忽略次要特征。一个对象是现实世界中一个实体的抽象,一个类是一组对象的抽象,抽象是一种单一化的描述,它强调给出与应用相关的特性,抛弃不相关的特性。
五大基本原则
- 单一职责原则:每一个类,功能要求单一,只负责一件事
- 开放封闭原则:对修改关闭,对扩展开放
- 里氏替换原则:子类能够替换父类,能够出现在父类出现的任何地方
- 依赖倒置原则:具体依赖抽象,上层依赖下层
- 接口分离原则:接口中的方法要尽量细化,同时接口中的方法尽量的少
Singleton单例设计模式
单例的概念
- 单例模式最初的定义出现于《设计模式》(艾迪生维斯理,1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”
- Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供”。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。
单例的特点
- 单例类只能有一个实例
- 单例类必须自己创建自己的唯一实例
- 单例类必须给所有其他对象提供这一实例