1.static意思为"静态的",
被static修饰的变量叫做静态变量,
被static修饰的方法叫做静态方法
2.静态变量和静态方法是类级别的,通过 类名. 来进行调用
在我们写代码时,虽然写 引用.静态变量名 或者 引用.静态方法名 程序也能够正常运行,但实际上运行和对象无关,编译器会把 引用. 替换成 类名. 所以哪怕引用的值是null,程序依然正常运行。但使用 引用. 会让别人迷糊,分不清是实例数据还是静态数据了。
(如果我们把引用的值改为null,再运行一次,会发现程序依然能够成功运行,因此更能体现 引用. 在调用静态相关的数据时没有用)
3.静态代码块
静态代码块的写法是:
static{
java语句;
java语句;
}
静态代码块在类中,可以有多个,它在类加载时执行,在main方法执行之前执行,并且每个静态代码块只执行一次,如果编写了多个静态代码块,它按照自上而下的顺序去执行,
静态变量和静态方法也在类加载时执行,要注意静态数据和静态代码块一起按照自上而下的顺序执行
4.静态变量存储在方法区(按JVM规范来讲)
5.什么时候使用静态变量,好处是什么?
当一个类创建出的所有对象都具有某一个相同的属性,这时候我们可以使用静态变量。
例如有一个中国人类,那国籍都是中国,这时候就可以把国籍这个属性定义为静态变量,并赋值成中国,这样的好处是节省内存
如果是实例变量的话,我们每new一个对象,国籍这个属性都会占一块空间,100个对象,就是100块空间
如果是静态变量的话,它只占一块空间,被放到堆内存当中
(这只是一个使用案例,还有其他的用法)