java_字段初始化的规律、静态方法中访问类的实例成员、查询创建对象的个数
字段初始化规律:
当执行如下代码时
1 class InitializeBlockClass{ 2 3 public int field=100; 4 { field=200; } 5 public InitializeBlockClass(int value) { 6 this.field=value; 7 } 8 public InitializeBlockClass(){ 9 10 } 11 { field=150; } 12 } 13 14 15 16 public class Work { 17 public static void main(String[] args) { 18 InitializeBlockClass obj=new InitializeBlockClass(); 19 System.out.println(obj.field); 20 obj=new InitializeBlockClass(300); 21 System.out.println(obj.field); 22 } 23 24 }
执行结果如下
当执行空构造方法不赋值时,会按照代码的先后顺序依次进行赋值,最后结果为最后赋的值;当执行有参数的构造函数时,会直接赋值为传递的参数。
当代码中存在静态程序初始化块时,会执行在前面的静态初始化块,且只执行一次。
静态方法中访问类的实例成员:
静态方法中没有进行对象的实例化,需要调用时,在静态方法中进行类的实例化就可以了。
1 public class Work { 2 public static void main(String[] args) { 3 shuju.get(); 4 }//end main 5 6 }//end Work 7 class shuju{ 8 public int value=100; 9 public static int value1=120; 10 public static void get() { 11 shuju s=new shuju(); 12 System.out.println("实例对象:"+s.value); 13 System.out.println("静态对象:"+value1); 14 15 }//end get 16 }//end shuju
查询创建对象的个数:
在类中创建一个静态变量num,每执行一次构造函数就进行num++的操作,最后num即为创建对象的数量。
1 public class Work { 2 public static void main(String[] args) { 3 jishu j_1=new jishu(); 4 jishu j_2=new jishu(); 5 jishu j_3=new jishu(); 6 jishu j_4=new jishu(); 7 jishu j_5=new jishu(); 8 j_1.getnum(); 9 } 10 } 11 class jishu{ 12 static int num=0; 13 jishu() { 14 num++; 15 } 16 public void getnum() { 17 System.out.println("创建类的数量为:"+num); 18 } 19 }