1. 类与对象
1.1. 类
对具有同一种或多种属性的一类事物的抽象
1.1.1. 封装: 封装是指将一系列代码逻辑进行代码块包裹,使其构成一段完整逻辑
1.1.2. 继承: 子类继承父类的方法和属性,
①若没有重写,则可以使用父类的方法和属性,
②若进行重写,则不同子类在实现接口或类的方法会有不同的特异性行为
1.1.3. 多态: 不同类继承或实现同一类和接口会产生不同行为,
多态是建立在继承的基础上的
**初始化: **类会在第一次调用时进行初始化,
1.1.4. 成员
成员变量: 对象的属性,每个对象有不同属性值
**成员变量初始化: ** ①在非static时,会在对象创建时初始化,②在static时会在类加载时初始化③初始化时,若属性在类中被赋值 , 则该成员使用该值, 若未赋值, 属性在初始化时会被赋予默认值
成员方法: 对象的行为,
static关键字: 使用static关键字修饰的则属于类,
private关键字: 私有化处理, ①无法直接使用对象进行调用 ②无法继承, ③只能这个类使用或者使用反射进行强制调用
this关键字: this是指向调用本方法的对象, 若本方法为static方法,则不允许使用this(静态方法随着类的加载而加载,没有指向对象)在前端js中亦是如此,所以,对于前端js的方法中的方法若要使用vue的属性或方法,可以先将this赋值给临时变量
final关键字: 不能被继承, 从变量变成常量,对象的值无法发生改变
1.1.5. 局部
局部变量: 在方法中定义,随着方法的结束而消亡
1.1.6. 内部类
成员内部类: 成员位置的内部类, 成员内部类和外部类可以互相访问彼此的私有成员
静态内部类: 随着调用外部类,静态内部类加载
局部内部类: 在方法中定义的类,局部内部类是类的声明,无法通过导包等方式访问(只有调用了方法,并且局部内部类代码块执行了,局部内部类才存在), 声明了局部内部类之后才能使用局部内部类
匿名内部类: 用来实现
1.2. 对象
某一类事物的具象化,具有明确的特性,是独特的个体
**初始化: **对象会在创建时进行初始化, 对象是实际存在的个体, 有分配的地址,有唯一确定的属性和行为, 字段会被赋予默认值
1.3. 抽象类和接口
1.3.1. 接口是用来规范子类所属更大类
1.3.2. 抽象类使用abstract修饰,也是用来规范子类所属的更大的类
抽象类一般作为父类,和接口的区别在于,抽象类可以有属性,(供子类继承,进一步提高规范)抽象类可以有自己的方法逻辑和代码块(特别是静态方法和静态代码块,可以作为前置处理,进一步封装)抽象类和接口都不允许有对象
1.4. 代码块
静态代码块: 在类加载时执行
构造代码块: 在对象实例化时执行
局部代码块,调用时执行
1.5类加载的初始化
类在初始化时,①父类初始化,②静态成员变量创建, 执行静态代码块, 静态成员初始化,③静态方法加载(若需要创建对象)④父类对象创建⑤子类对象创建
2. String类
2.1. String
使用final修饰,无法被继承, String的值生成就会在常量池中,栈中地址指向堆中地址,堆中地址指向常量池
jdk1.8使用的是char[]存储字符串,jdk1.9之后String的底层是byte数组, 每次通过不同途径创建的String类型都会在栈中创建一个地址,地址指向常量池,
每次字符串发生变化时,都会在常量池中指向新的地址,若常量池中没有,则会在常量池中创建新的对象
2.2. equals()方法
若未重写则继承object的方法比较地址值
若重写, 使用idea和注解重写equals()方法, 则调用每个字段的equals()方法,①若这个字段的类型重写了equals方法则比较这个字段的实际值②若未重写,则比较这个字段的地址值, ③String重写了equals()方法
String重写了equals()的逻辑
String底层数据存储是基于数组,
链表底层是基于节点, 节点由数据域和指针域构成,数据域存放节点存储内容,指针域存放与节点相连节点的地址值
3.数据类型
3.1各数据类型
容器:存放信息数据的载体.
数据类型(字面量):
bit: 比特, 计算机最小信息单元, 即代表0/1的二进制
byte: 字节, 计算机最小数据单元, 一个字节由8个比特 , 在数字类型中,第一个比特位正负符号,由于存在0, 所以 byte类型容器,取值范围为-2的七次方~2的七次方-1,
short: 占用两个字节长度, 即16个比特位,取值在**-2的15次方~2的15次方-1**
int: 最常用的整形, 四个字节, 32个比特位, 约为正负21亿
**long:**8byte,很大,大概约为21亿的平方吧
浮点型: float: 4byte,表示的数比long大,double: 很大, 浮点型计算会产生精度丢失, 推荐使用BigDecimal
字符: char: 字符型,用于表达各种字符, 字符需要遵循使用编码, ex:iso-8859-1,gbk,utf-8(unicode字符集的一个编码表,网站(中文)编码为utf-8),推荐使用同一字符集,不要来回切换
boolean: true/false,