Java中static关键字的应用
static修饰成员变量与普通成员变量的对比
概念特征应用 static修饰成员方法与普通成员方法的对比
概念特征 static修饰代码块与构造代码块及普通代码块的对比
概念特征应用
Java中static关键字的应用static是Java中常用的关键字,代表全局或者静态的意思。
关于static的特征,我们可以理解为:方便在没有创建对象的情况下来进行某些操作。
通常可用于修饰成员变量和方法,也可以用于形成静态代码块。
实际应用中,可以将需要频繁操作、通用型信息设置、公共组件封装等操作设置为静态。
static修饰成员变量与普通成员变量的对比 概念
静态成员:用static修饰的成员变量,通常也称为静态属性、类成员、全局属性等。非静态成员:没有被static修饰的成员变量,也称为实例变量、实例成员、对象成员、对象属性等。
特征
静态成员:
静态成员是属于整个类的,由类所进行维护,仅在类初次加载时会被初始化,直到在类被销毁才回收。通过该类实例化的所有对象都共享类中静态资源,任一对象对静态信息的修订,都将影响所有对象。由于静态成员在类加载期间就已经完成初始化,存储在Java Heap(JDK7.0之前存储在方法区)中静态存储区,因此优先于对象而存在,可以通过类名和对象名两种方式访问(建议通过类名访问)。 非静态成员:
非静态成员属于对象独有,每个对象进行实例化时产生各自的成员,随着对象的回收而释放。对象对各自成员信息的修订不影响其他对象。只能通过对象访问。
应用
可以将频繁调用的公共信息、期望加快运行效率的成员设置为静态。但需要注意,由于其生命周期长,即资源占用周期长,要慎用。
static修饰成员方法与普通成员方法的对比 概念
静态方法:用static修饰的成员方法,通常也称为类方法、全局方法等。非静态方法:没有被static修饰的成员方法,也成为实例方法,对象方法等。
特征
与静态成员类似,静态方法属于整个类的,由类所进行维护,优先于对象而存在,因此可以通过类名和对象名两种方式访问,也因此在静态方法中无法直接访问同类中的非静态成员。
static修饰代码块与构造代码块及普通代码块的对比 概念
静态代码块:被static修饰的,定义在类内部,用{}括起的代码段。构造代码块:没有被static修饰的,定义在类内部,用{}括起的代码段。普通代码块:定义在方法内部,用{}括起的代码段。
特征
静态代码块:
只能出现在类内,不允许出现在方法内。
可以出现多次,按顺序在类加载时执行。
无论该类实例化多少对象,只执行一次。
构造代码块:
可以在类内出现多次,按顺序在每个对象实例化时执行。执行优先级:比静态代码块低,比构造方法高。每次执行实例化对象时,均会执行一次。
普通代码块:
可以在方法内出现多次,按顺序在方法调用时执行。
应用
静态代码块:基于性能优化的考量,多适用于需要在项目启动时执行一次的场景,譬如项目资源整体加载等。构造代码块:多适用于类中每个对象产生时都需要执行的功能封装。与构造方法的区别在于:构造方法是在new执行时有选择性的调用带参或者无参构造,而构造代码块则是,在每个对象实例化时都一定会执行。普通代码块:适用于在方法内进行代码功能拆分。
除了上述三个应用,我们还需要注意的是:
- 不允许在方法内部定义静态局部变量方法内定义的局部变量,作用范围为:自定义位置起,至方法结束,在此期间,不允许普通代码块内声明同名的局部变量。



