1. static 静态变量
static声明的变量、代码块等,将会全局存在,也就是说不会受到JVM垃圾机制影响。
static全局只会创建一个,花括号{}内包含的代码为代码块,所以需要注意对内存的影响
。
static修饰的方法不能使用super,修饰的变量不能使用this,因为是全局变量(也就是属于所有类)
代码块执行顺序:
静态代码块>main()主函数>构造代码块>构造方法>局部变量
#######构造方法和构造代码块的区别:
- 构造方法是给对应的对象进行初始化,构造代码块是给所有的对象进行统计处死话。
- 构造代码块的定义是不同对象共性的初始化内容
static关键字修饰的代码块不能存在任何方法中,代码块内执行顺序不能存在任何方法中
2. final常量修饰符
final 可以修饰:类,属性,内部类,方法
final 修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不可以改变
final 修饰的方法在子类不能重写,不能继承
3. abstract 抽象类修饰符
不能new 创建,也不能实例化,抽象类只能创建在子类中,abstract的方法必须重写
abstract 关键字不能应用于static、final、private中因为这些修饰符都不支持重写。
没有实现父类的所有abstract方法的子类,也是需要声明是abstarct类
4. transient 不参与序列化修饰符
只能修饰变量,实现serializable接口的,被transient修饰后,不再是对象持久化的一部分,不能序列化
5. native 外部定义
native method 就是一个java调用非java代码的接口
JNI = java Native Interface(通常是c或c++设计)允许其他平台调用java代码
6. synchronized 程序同步锁
synchronized修饰方法或代码块。
被synchronized 修饰后,只能同时被一个线程访问,其他线程访问该方法或代码块的将进入阻塞状态,等待上一个线程释放。
7. volatile
volatile 修饰的变量,保证了线程的可见性,即一个线程修改了这个变量,另一个线程立马可见
volatile 报纸单次读/取的原子性
原子性操作:一个或某几个操作只能在一个线程执行完之后,另一个线程才能执行操作,也就是说这些操作是不可分割的,线程不能再这些操作上交替执行
7. instanceof
双目运算符,判断是否一个类的实例
不能用来判断基本类型,当对象为class接口的实现类时,为true,左右位置互换均为true
- 判断是否为继承关系
- 判断是否实现关系
- 判断是否实例关系
网友评论