而且在前段时间在CSDN上看到一个贴子有关这方面的东西,于是把那个程序抄了下来,让大家看一看,可不可以帮大家理解static (这个贴子的主人可不要说我偷盗呀~!) public class TestStatic{ public static void main(String[] args){ TestClass t=TestClass.getObjTestClass(); System.out.println(t.counter1); System.out.println(t.counter2); } } class TestClass{ * public static TestClass t=new TestClass(); public static int counter1; public static int counter2=0; private TestClass(){ counter1++; counter2++; } public static TestClass getObjTestClass(){ return t; } } 这个程序是结果是 counter1=1 counter2=0 将有*的那一行,放在 public static int counter2=0;之后的任何一个位置,结果是 counter1=1 counter2=1
你说的先于类之前执行的是静态块吧.
还有好象jvm对static也做了优化哦!
可以直接调用,大家共享一个
public class TestStatic{
public static void main(String[] args){
TestClass t=TestClass.getObjTestClass();
System.out.println(t.counter1);
System.out.println(t.counter2);
}
}
class TestClass{
* public static TestClass t=new TestClass();
public static int counter1;
public static int counter2=0;
private TestClass(){
counter1++;
counter2++;
}
public static TestClass getObjTestClass(){
return t;
}
}
这个程序是结果是
counter1=1
counter2=0
将有*的那一行,放在 public static int counter2=0;之后的任何一个位置,结果是
counter1=1
counter2=1
静态构造器,类级别的构造器。
static {
var = value ;
…………… ;
}