Object类
java是面向对象的语言,在java中所有的引用类都默认继承Object
所有引用类型的默认值是NULL
在基本数据类型中==比较的是两者的值
在引用数据类型中==比较的是地址是否是同一个
finalize方法是一个对象最后要执行的代码(要被销毁时)
包装类(缓存机制)
java面向对象 所有独立内存都是对象
int a=12; a不是Object a不是对象
int是基本数据类型
基本数据类型记录的是数值,不是面向对象
因此java为了实现万物皆对象的理念,给每一个基本数据类型提供了对应的封装类型。
byte | short | int | long |
Byte | Short | Integer | Long |
float | double | char | boolean |
Float | Double | Character | Boolean |
基本数据类型的封装类型可以和基本数据类型直接转换
基本数据类型转换成引用数据类型的过程:装箱
int 12-------->Integer 12
引用数据类型转换成基本数据类型的过程:拆箱
Integer 12-------->int 12
基本数据类型的封装类型的缓存
整数类型的缓存范围:一个byte -128~127
只有Integer的范围可以调整
Character缓存范围: 0~127
当基本数据类型和对应的封装类型比较时,封装类型拆箱后比较
Integer.valueOf(String) 返回值是Integer类型
Integer.parseInt(String) 返回值是int类型
package
包
第一行声明包
使用本包下的类不需要导包
使用其他包下的类需要导包
若需要用到Arrays类则:import java.util.Arrays
若需要用到util包下所有的类则:import java.util.*
所有的类默认引入java.lang
类名重名的情况下可以使用类的全名指定具体使用哪个类
static
静态的、类的
static修饰的属性是属于类的,可以使用类名直接调用static修饰的属性和方法
静态属性对所有的对象是共享的
本类的对象也可以调用静态的属性和方法,调用的方式还是静态方法
静态方法中不能直接调用非静态的属性和方法
抽象类
使用abstract修饰的类是抽象类
抽象类没有直接实例 不能new
抽象类中可以定义抽象方法
抽象方法 使用abstract修饰的方法
抽象方法没有方法体
抽象类用来被继承
实体类继承抽象类必须实现抽象类中抽象方法(重写)
抽象类继承抽象类可以不实现抽象方法
Final
最终的
final的用途
1.final可以修饰类------>类不能被继承
2.final可以修饰方法------>不能被重写
3.final可以修饰量 不能被重新赋值 =
不能被重新赋值不代表不能被改变
接口
接口用interface定义
接口中没有构造方法
接口中定义属性
接口中定义的属性都是常量 默认使用public static final修饰
接口中只能定义方法,没有方法体
接口中的方法叫做抽象方法 --没有具体实现的方法
接口中定义的方法默认使用public abstract修饰
接口中可以定义default修饰的实体方法
虽然使用default修饰但是访问权限还是public
java中使用implement声明一个类实现一个接口
一个类可以实现多个接口加逗号
接口使用extends继承接口
如果一个接口中只有一个为实现的方法,这个接口称为函数式接口
用注释@FunctionalInterface检查
深浅拷贝
克隆:被克隆的对象的类必须实现Cloneable
浅拷贝 只复制当前类
浅拷贝Student类和Teacher类
深拷贝 复制当前类,并且复制当前类需要的所有类
深拷贝Student类和Teacher类
深浅拷贝理解图