1.static:静态的
1)修饰成员变量 - 静态成员变量
静态成员变量
1.属于类的
2.使用: 类名.变量名 调用
3.静态成员变量只有一个,只加载一次
4.被多个对象所共用
普通成员变量
1.属于对象
2.使用: 对象.变量名 调用
3.有几个对象就有几个成员变量
2)修饰成员方法
1.只要加了static关键词,都是属于类的
2.属于类
3.使用: 类名.方法名
4.在普通方法中:可以使用静态成员变量和静态成员方法
5.在静态方法中:成员变量和成员方法都不可直接使用
因为都是属于对象的
3)修饰代码块 - 静态代码块
1.三种使用类的情况都会使用到静态代码块
并且是在使用前调用静态代码块
2.静态代码块只加载一次
3.作用:提高 程序执行效率
只需要执行一次的东西放在静态代码块中
代码块:在构造方法之前执行的
作用:提取所有构造方法的公共部分
初始化成员变量
静态代码块和静态成员变量谁先执行:谁先写谁先执行
JVM内存:
xx.java -> xx.class -> 类加载
->静态成员变量会跟类一起加载到方法区中
总结:在使用静态变量时,类的对象不一定创建(不一定存在),
所以类的静态成员变量最好不要放在构造器中初始化
类什么时候加载:
第一次使用类时,使用前必须进行类加载
使用类的情况:
1.创建类的对象
2.调用静态的成员变量
3.调用静态的成员方法
有父子类关系的代码块 和 构造方法 和 静态代码块的执行顺序:
父类的静态代码块 -> 子类的静态代码块 -> 父类的代码块 -> 构造方法 -> 子类的代码块 -> 子类的构造方法
2.final - 最后的
final可以修饰: 类/成员变量/局部变量/成员方法
1)修饰变量:不可被修改
局部变量:
1.值不可变
2.使用前必须初始化
成员变量:
1.值不可变
2.使用前必须初始化
基本数据类型:值不可变
引用数据类型:
堆中的地址值不可变,但是引用对象的内容可变
2)成员方法: 不可被重写
3)类:不可被继承
3.接口:
1)可以把接口理解成一个特殊的抽象类
实际上接口是一个 引用类型
2)接口中可以放什么
a.无论任何版本都可以放
1.抽象方法
2.静态常量
b.jdk1.8以后
1.静态方法
只能通过接口调用 -> 接口名.方法名
2.默认方法
作用:做功能的扩展
c.jdk1.9以后
1.私有方法
普通私有方法: 提取接口中默认方法的公共部分
实现代码的复用
静态私有方法: 提取静态方法中公共部分
实现代码的复用
3)接口的使用步骤
a.因为接口不能new 对象,所以需要创建一个接口的实现类
public class 实现类 implements 接口
b.重写覆盖(实现)接口中所有的抽象方法
b.在主方法中创建实现类的对象,调用重写过的抽象方法