以下是一个关于静态变量初始化的示例: #include <iostream> void foo() { static int x = 10; // 静态局部变量 std::cout << "x = "<< x << std::endl; } int main() { foo(); // 输出 x = 10 foo(); // 输出 x = 10,不再重新初始化 return 0; } 复制代码 在这个例子中,x 是...
总之,final修饰的静态变量的初始化时机是在类被加载到JVM时进行的,且该过程是线程安全的。在类加载过程中,静态代码块会在final修饰的静态变量之前执行,但静态代码块中不能引用final修饰的静态变量。
因此,静态变量可以用来存储整个程序都需要使用的数据,如配置信息、全局变量等。 初始化时机 静态变量在类加载时被初始化,其初始化顺序与定义顺序有关。 如果一个静态变量依赖于另一个静态变量,那么它必须在后面定义。 public class MyClass {public static int count1 = 0;public static int count2 = count1 + ...
静态成员变量不会初始化, 也不会加载静态内部类String simpleName=StaticTest.class.getSimpleName();/**case2**///会执行静态代码块, 静态成员变量会初始化, 不会加载静态内部类//输出 StaticMember// static code initializerStaticMember staticMember=StaticTest.staticMember;/*...
Java中非静态成员变量、静态成员变量的初始化时机。 非静态变量 我们在这里分析三种结构,着重分析这三种结构的初始化顺序: 成员变量初始化语句; 成员变量初始化块; 构造函数; 示例一: publicclassMyTest {privateString name = "wei.hu";publicMyTest(String name) { ...
初始化阶段为静态变量赋值、执行静态代码块,为testClass赋值调用构造方法产生类的对象,此时为实例变量在堆里分配内存并赋值count=“testClass”,接着执行输出语句,输出第一行。 然后count+1,count2+1.输出第二行。 继续为静态变量赋值,count1没有操作,仍为1,count2被重新赋值为0 ...
public static void main(String[] args) { System.out.println(MyTest.name); } } #结果 This is static initialize block. Will assign the variable name to: mengna Before the name was modified: null After the name was modified: mengna wei.hu 分析: 初始化块在对静态变量赋值之前,发现MyTest.nam...
在Java中,静态字段(也称为类变量)是属于类的,而不是属于某个实例的。因此,静态字段的初始化时机是在类被加载到JVM(Java虚拟机)时进行的。具体来说,静态字段的初始化时机有以下几种情况:1...
2、静态块常用来执行类属性的初始化 3、静态块优先于各种代码块以及构造函数,如果一个类中有多个静态代码块,会按照书写顺序依次执行 4、静态代码块可以定义在类的任何地方中除了方法体中【这里的方法体是任何方法体】 5、静态代码块不能访问普通变量 针对4中描述静态代码块不能存在任何方法体中的原因其实也是很简单...