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