Static 修饰的成员变量和成员方法独立于该类的任何对象,简言之,它不依赖类的特定实例,被类的所有实例共享~
静态变化(static修饰的)和实例变量的区别(没有被static 修饰)的区别
- 静态变量在内存中只有一个拷贝,JVM只为静态变量分配一次内存,在类加载的过程中完成内存的分配,可用类名直接访问,也可以用对象访问。
- 实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可有有多个拷贝,多个拷贝互不影响,只可用对象访问。
备注:使用静态变量的场景
(1)对象之间共享值时;
(2)方便访问变量时;
静态方法和Static代码块的区别
- 静态代码块是自动执行的;静态方法是被调用的时候才执行的;
- 静态方法:如果我们在程序编写的时候需要一个不实例化对象就可以调用的方法,我们就可以使用静态方法;
- 静态程序块:当一个类需要在被载入时就执行一段程序,这样可以使用静态程序块。
- 静态方法可以执行多次,静态代码块只会在类加载的时候执行一次;
注意事项: - 在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),不能直接访问类中的非静态成员。因为非静态成员,需要先创建类的实例对象后才可以使用,静态方法在使用前不用创建任何对象。
- 静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何对象,在静态方法调用时,this所引用的对象并没有产生。
网友评论