静态初始化代码块与非静态初始化代码块之间的区别是什么?我的问题是关于静态关键字的一种特殊用法。可以使用static关键字用于覆盖不属于任何函数的类中的代码块。例如,以下代码编译:public class Test {
private static final int a;
static {
a = 5;
doSomething(a);
}
private static int doSomething(int x) {
return (x+5);
}}如果删除static关键字它会抱怨,因为变量a是final..但是,可以同时删除这两者。final和static关键词,并使其编译。在这两方面我都很困惑。我怎么会有一个不属于任何方法的代码部分?怎么可能调用它呢?一般来说,这种用法的目的是什么?或者更好的是,我在哪里可以找到有关这方面的文档?
3 回答
皈依舞
TA贡献1851条经验 获得超3个赞
static
int a
static
int a
慕仙森
TA贡献1827条经验 获得超8个赞
UFF!什么是静态初始化器?
static {}
好的!告诉我更多.。
是一个代码块 static { ... }
在任何java类中。并在调用类时由虚拟机执行。 不 return
支持语句。 不支持任何论点。 不 this
或 super
是支持的。
嗯,我在哪里可以用呢?
不要只是叫!例子在哪里?
package com.example.learnjava;import java.util.ArrayList;public class Fruit { static { System.out.println("Inside Static Initializer."); // fruits array ArrayList<String> fruits = new ArrayList<>(); fruits.add("Apple"); fruits.add("Orange"); fruits.add("Pear"); // print fruits for (String fruit : fruits) { System.out.println(fruit); } System.out.println("End Static Initializer.\n"); } public static void main(String[] args) { System.out.println("Inside Main Method."); }}
输出?
内部静态初始化器。
苹果
桔黄色的
梨
结束静态初始化器。
内部主要方法。
添加回答
举报
0/150
提交
取消