- 访问权限修饰符
- 用于控制类的成员是否可以在其他类中访问//不可修饰局部变量
- 非访问修饰符
- static
- 作用:用于内存管理
- 范围
- 使用范围:变量、方法、代码块和嵌套类
- 作用范围:static修饰的内容,属于类,而不是类的实例
- 修饰的内容:
-
1)变量:类变量,静态变量
2)方法:类方法,静态方法
3)代码块:静态代码块
4)嵌套类:静态内部类
-
- 静态与非静态比较
- 静态变量
- 类的成员变量分为:
- 静态变量//被static修饰的变量
- 实例变量//未被static修饰的
- 类的成员变量分为:
- 静态方法
- 单例模式时,外部拿不到构造函数,定义一个静态方法来获取对象很有必要
- 静态代码块
- 不能访问类的实例变量和方法
- 静态类
- 只有内部类可以声明为static,外部类声明编译不通过
- 只能访问 静态成员变量和方法,普通内部类可以访问任意外部类的成员变量和方法
- 可以声明普通成员变量和方法,普通内部类不能声明staitc成员变量和方法
- 可以单独初始化,普通内部类要通过类的实例初始化
- static
-
- abstract ,创建抽象类和抽象方法
- final,修饰类、方法和变量
- synchronized修饰的方法、代码块只能在一个而线程被访问,不能修饰构造器、成员变量
- volatile修饰的成员变量每次被线程访问时,强迫从共享内存中重读该成员变量的值,当成员变量发生变化时,强迫线程将变化值写回//保证线程操作时变量可见性,禁止指令重排,无法保证操作的原子性
- 实现原理
- transient 序列化的对象包含被transient修饰的成员变量时,jvm跳过该特定的对象
- native修饰的方法通常采用c/c++实现
- final修饰
- 类:终类,不可继承
- 方法:最终方法,子类可调用,但不能重写覆盖
- 构造方法不能用final修饰
- 变量
- 修饰基本类型,该变量不可重新赋值
- 修饰引用类型 ,该变量引用的地址不能变,引用对象内容可以变
- 常量,只能赋值一次//常量名大写_连接
- 若修饰成员变量,必须 显示指定初始值
- 初始化块中
- 或构造器中指定均可
- 唯一可修饰局部变量的修饰符
- 可以执行宏替换//编译阶段可以确定内容的只能来源于常量池