public class StaticStuff {
static int x = 15;
static{
x *=3;
}
public static void main(String[] args){
System.out.println("x= "+x);
}
static{
x /=3;
}
}
问题1:static { }为什么这里不需要函数名,以及返回类型。
问题2:运行结果问什么是x=15,不是先运行x*=3,x变成45,再运行System.out.println("x="+x);输出应该是45,呀,最后运行x /=3的吗?
static int x = 15;
static{
x *=3;
}
public static void main(String[] args){
System.out.println("x= "+x);
}
static{
x /=3;
}
}
问题1:static { }为什么这里不需要函数名,以及返回类型。
问题2:运行结果问什么是x=15,不是先运行x*=3,x变成45,再运行System.out.println("x="+x);输出应该是45,呀,最后运行x /=3的吗?
问题2:在整个类加载完成之后,就初始化静态(静态变量,静态块)。只执行一次,然后类加载器ClassLoader就把类Class返还,执行main方法。以后new这个对象都不会再执行这个代码块
用一个简单点的例子来说名就是,在这个main方法下面定义一个static的变量y难道main方法就访问不到了么。这个执行顺序主要是针对同级内的来说,而静态变量和静态方法与main函数的调用不是在同一级别上,因此说谁先谁后这么比较是错误的。
还有static{ },这个是静态的代码块的语法抒写规范,不是方法哦