java面试点笔记

static关键字:
修饰变量,方法,类;静态代码块
静态代码块可以在类加载时初始化变量,静态内部类我认为在不需要回掉外部类变量,只是单纯在外部类中使用便可生命为静态,普通内部类需要持有外部类的引用,因此可以访问外部类的变量。

volatile关键字:
主要用在多线程中的变量安全问题,常见在单例模式中。
普通变量在多线程中会有各自的一份拷贝,各个线程之间修改变量容易产生同步问题。若变量声明为volatile,则线程读取的一值为主内存中的最新值,但线程修改变量值时会立马回写主存中的值,其他线程在操作变量时会直接读取内存中的值进行操作,从而避免多线程问题。
但volatile无法保证原子性:若是变量计算依赖本身的值容易出错,,条件语句中出现运算也易出错,常用来实现标志位。

你可能感兴趣的:(java面试点笔记)