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