一、基本数据类型的封装类
- 基本数据类型记录的是数值,不是面向对象的。
java为了实现万物皆对象的理念,给每个基本数据类型提供了对应的封装类型。
基本数据类型 | 对应的封装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
基本数据类型的封装类型,可以和基本数据类型直接转换。
-
装箱:基本数据类型转换成对应的封装类型的过程叫做装箱。
拆箱:将封装类型转换成对应基本数据类型的过程
-
java为基本数据类型的封装类型提供了缓存。
整数类型缓存大小为一个byte -128~127 只有Integer类型的缓存可以调整
浮点型没有缓存
character类型的缓存为0~127
-
封装类型之间不能够互相转换,封装类型只要类型不同不可比较,基本数据类型和对应的封装类型比较,封装类型拆箱后比较。
-
将字符串转化为Integer类型
Integer.valueOf("34");//返回Integer类型
Integer.parseInt("34");//返回int类型
二、包
- 包 package 声明包
- 使用本包下的类不需要导包
- 使用其他包的类需要导包 import 包名
- 所有的类默认引入java.lang
- 类名重名的情况可以使用类名的全名指定具体使用哪个类
- 包有封装性,没有父子关系
三、static 静态的
- 修饰的属性是属于类的,可以通过类名直接调用static修饰的属性和方法
- 静态属性对所有对象共享
- 本类的对象也可以调用静态的属性和方法,调用的方式还是静态方式
- 静态方法中不能直接调用非静态的属性和方法,需要通过对象调用
- 静态方法无法被重写
四、Object类
- java是面向对象的,在Java中所有的引用类,默认继承Object
- 引用类型默认值为null
- 在引用数据类型中==比较的是地址是否是一个,基本数据类型中比较的是值是否相等
- finalize方法是一个对象最后执行的代码(要被注销时)
- Object类中的方法:
getClass(); hashCode(); equals(); clone(); toString(); notify(); notifyAll(); wait(); finalize();
五、抽象类和抽象方法
抽象类
- 使用abstract修饰的类是抽象类。
- 抽象类没有直接实例 不能new
- 抽象类中可以定义抽象方法
- 抽象类用来被继承
抽象方法
- 使用abstract修饰的方法。
- 抽象方法没有方法体,用;结束。
- 实体类继承抽象类 必须实现抽象类中抽象方法(重写)。
- 抽象类继承抽象类可以不实现抽象方法。
六、final 最终的
- final的用途
- final可以修饰类 不能被继承
- final可以修饰方法 不能被重写
- final可以修饰量 不能被重新赋值 =
- final修饰变量
被final修饰的变量可以通过以下两种方式初始化
final int height=200;//可以在这里直接对final修饰的变量初始化
public EasyFinal() {
height = 200;//也可以在构造方法中对final修饰的量进行初始化
}
注意:final和abstract是相斥的不能一块使用,final修饰的类或方法不能被继承(重写),abstract修饰的类或方法需要被继承(重写)
七、接口
- 接口中只能定义抽象方法,没有方法体
- 接口中定义的方法默认使用public abstract修饰,都是抽象方法 —没有具体实现的方法
- 接口中定义的属性都是常量 默认使用public static final修饰
- 接口中没有构造方法
- 接口中可以定义default修饰的实体方法,虽然使用default修饰但是访问权限还是public
- java中使用implements来声明一个类实现接口,一个类可以实现多个接口
- 接口可以使用extends继承接口,且可以继承多个接口,接口不能继承类
- 如果一个接口中只有一个未实现的方法,这个接口称为函数式接口,可以使用注解@FunctionalInterface验证
八、克隆(拷贝)
- 被克隆的对象的类必须实现Cloneable接口,没有实现会报异常。
- 浅拷贝:创建一个新的对象,但只复制原始对象的基本数据类型的字段或引用(地址),而不复制引用指向的对象。这意味着新对象和原始对象中的引用指向相同的对象。如果原始对象中的字段是基本数据类型,那么这些字段会被复制到新对象中,而如果字段是引用类型,则新对象和原始对象的对应字段将引用同一个对象。因此,对新对象所做的修改可能会影响到原始对象,因为它们共享相同的引用。
- 深拷贝:创建一个新的对象,并且递归地复制原始对象的所有字段和引用指向的对象,而不仅仅是复制引用本身。深拷贝会递归复制整个对象结构,包括对象内部的对象,确保新对象和原始对象之间的所有关系都是独立的。这意味着对新对象所做的修改不会影响到原始对象,因为它们拥有彼此独立的副本。