1.static
1.static 用于修饰类变量,方法和方法块
2.被static修饰的方法与变量可被所有类调用,通过类名.方法名,类名.变量调用
注:方法内部只能调用同样被 static 修饰的方法,不能调用普通方法
3.静态方法与静态变量与类对象是无关的,无论new多少个对象,静态方法与静态对象只被初始化一次。
2.final
1.被 final 修饰的类,表明该类是无法继承的;
- 被 final 修饰的方法,表明该方法是无法覆写的;
- 被 final 修饰的变量,说明该变量在声明的时候,就必须初始化完成,而且以后也不能修改其内存地址。
注:无法修改其内存值,但可以修改其值。即指向的内存地址不变,但地址对应的值改变。
3.volatile
volatile 的意思是可见的,常用来修饰某个共享变量,意思是当共享变量的值被修改后,会及时通知到其它线程上,其它线程就能知道当前共享变量的值已经被修改了。
(1)线程在拿值时,是直接和 CPU 缓存打交道的,而不是内存,会出现数据不同步的情况,即线程拿到相同的变量却拥有不同的值。
(2)此时需要一种机制,就是内存会主动通知 CPU 缓存。当前共享变量的值已经失效了,你需要重新来拉取一份,CPU 缓存就会重新从内存中拿取一份最新的值。
网友评论