Java中的静态块
时间:2020-02-23 14:37:18 来源:igfitidea点击:
在本教程中,我们将看到如何在Java中实现静态块。
以下是Java中静态块的一些重要知识点。
- 静态块用于类的静态初始化
- 静态块仅在创建类的对象或访问类的静态成员时执行一次
- 静态块在调用对象的构造函数之前执行。
语法
static{
//statements
}
例子
让我们在举例的帮助下看看。
创建一个类 App.java
package org.igi.theitroad;
public class App {
static int a;
int b;
static {
a = 100;
System.out.println("Static block is called");
}
App(int b)
{
this.b=b;
System.out.println("Constructor is called");
}
}
创建一个名为的主类 StaticBlockMain.java
package org.igi.theitroad;
public class StaticBlockMain {
public static void main(String[] args) {
System.out.println(App.a);
}
}
运行上面的程序时,我们将得到以下输出:
Static block is called 100
如我们所见,当我们访问类的静态变量时,调用静态块。
让我们看看另一个例子和更改内容 StaticBlockMain.java如下。
package org.igi.theitroad;
public class StaticBlockMain {
public static void main(String[] args) {
App app=new App(300);
System.out.println("Static variable: "+App.a);
System.out.println("Instance variable: "+app.b);
}
}
如我们所见,在调用对象的构造函数之前调用静态块。
我们无法使用实例变量 static block。
这类似于静态方法,我们无法在静态块中使用实例变量,否则我们将获得编译错误无法对非静态字段B进行静态引用。
使用多个静态块
我们可以在类中使用多个静态块,它们将从顶部调用。
让我们通过示例来理解。
package org.igi.theitroad;
public class App {
static int a;
static int b;
static int c;
static {
a = 100;
System.out.println("Static block 1 is called");
}
static {
b = 200;
System.out.println("Static block 2 is called");
}
static {
c = 300;
System.out.println("Static block 3 is called");
}
App()
{
System.out.println("Constructor is called");
}
}
创建主类staticblockmain.java
package org.igi.theitroad;
public class StaticBlockMain {
public static void main(String[] args) {
System.out.println("Static variable 1: "+App.a);
System.out.println("Static variable 1: "+App.b);
System.out.println("Static variable 1: "+App.c);
}
}
输出:
Static block 1 is called Static block 2 is called Static block 3 is called Static variable 1: 100 Static variable 1: 200 Static variable 1: 300

