给你贴个试验: class TestStatic { static void TestFunction() { System.out.println("这是一个静态方法!"); }
static { System.out.println("这是一个静态代码块!"); }
public static void main(String[] args) { TestStatic ts = new TestStatic(); ts.TestFunction(); } }输出结果为:这是一个静态代码块! 这是一个静态方法! 这下你该知道那个先执行了吧!
public class TestJJ { public static void getPrint() { System.out.println("静态代码执行!!!!---------"); } static { System.out.println("正在执行静态代码块!!!!--------"); }
public static void main(String[] args) { //TestJJ.getPrint(); } } 输出:正在执行静态代码块!!!!-------- 可以看出静态代码块,在类加载编译的时候就执行了, public class TestJJ { public static void getPrint() { System.out.println("静态代码执行!!!!---------"); } static { System.out.println("正在执行静态代码块!!!!--------"); }
class TestStatic
{
static void TestFunction()
{
System.out.println("这是一个静态方法!");
}
static
{
System.out.println("这是一个静态代码块!");
}
public static void main(String[] args)
{
TestStatic ts = new TestStatic();
ts.TestFunction();
}
}输出结果为:这是一个静态代码块!
这是一个静态方法!
这下你该知道那个先执行了吧!
System.out.println("静态代码执行!!!!---------");
}
static {
System.out.println("正在执行静态代码块!!!!--------");
}
public static void main(String[] args) {
//TestJJ.getPrint(); }
}
输出:正在执行静态代码块!!!!--------
可以看出静态代码块,在类加载编译的时候就执行了,
public class TestJJ { public static void getPrint() {
System.out.println("静态代码执行!!!!---------");
}
static {
System.out.println("正在执行静态代码块!!!!--------");
}
public static void main(String[] args) {
TestJJ.getPrint(); }
}
输出:
正在执行静态代码块!!!!--------
静态代码执行!!!!---------
静态方法在类调用的时候才开始执行,且执行后一直存在内存当中。
总的来说静态代码块执行先于静态方法,且都是在编译期加载的,楼上存在一定的缺陷!!
而静态方法有名字,只有当被调用的时候才会被执行。
package c;public class T3 {
static void TestFunction() {
System.out.println("这是一个静态方法!");
} static {
System.out.println("这是一个静态代码块!");
}
public static void main(String[] args) {
}
}
去那看看.....