static int i;
static{
i = 0;
}
为什么不能写成
static int i;
i = 0;
7 个解决方案
#1
你第二个例子编译器会报错吗?
#2
好象静态变量必须在定义时初始化的,静态变量值是不能被改变的
#3
会
#4
可以啊,final修饰的才不能被修改。。。
#5
因为 它属于类啊, 没有实例之前就可以使用这个变量啊
比如类名A. int b = A::i; 这时还没A的实例呢。
而一般初始化块(不是静态初始化块),必须在有创建实例的时候,才会执行。
比如类名A. int b = A::i; 这时还没A的实例呢。
而一般初始化块(不是静态初始化块),必须在有创建实例的时候,才会执行。
#6
static i = 0;合起来就好了...
#7
要不就static int i = 0;
要不就static int i ; 然后 i 在主函数里或者方法内赋值 .
放在静态块内有一个好处 , 就是当需要当用类的时候就会加载静态快里面的内容, 不需要创建对象的. 很方便
要不就static int i ; 然后 i 在主函数里或者方法内赋值 .
放在静态块内有一个好处 , 就是当需要当用类的时候就会加载静态快里面的内容, 不需要创建对象的. 很方便
#1
你第二个例子编译器会报错吗?
#2
好象静态变量必须在定义时初始化的,静态变量值是不能被改变的
#3
会
#4
可以啊,final修饰的才不能被修改。。。
#5
因为 它属于类啊, 没有实例之前就可以使用这个变量啊
比如类名A. int b = A::i; 这时还没A的实例呢。
而一般初始化块(不是静态初始化块),必须在有创建实例的时候,才会执行。
比如类名A. int b = A::i; 这时还没A的实例呢。
而一般初始化块(不是静态初始化块),必须在有创建实例的时候,才会执行。
#6
static i = 0;合起来就好了...
#7
要不就static int i = 0;
要不就static int i ; 然后 i 在主函数里或者方法内赋值 .
放在静态块内有一个好处 , 就是当需要当用类的时候就会加载静态快里面的内容, 不需要创建对象的. 很方便
要不就static int i ; 然后 i 在主函数里或者方法内赋值 .
放在静态块内有一个好处 , 就是当需要当用类的时候就会加载静态快里面的内容, 不需要创建对象的. 很方便