课后作业03-动手动脑
源程序:
public class InitializeBlockClass { { field=200; } public int field=100; public InitializeBlockClass(int value) { this.field=value; } public InitializeBlockClass() { } public static void main(String [] args) { InitializeBlockClass obj=new InitializeBlockClass(); System.out.println(obj.field); obj=new InitializeBlockClass(300); System.out.println(obj.field); } }
运行结果:
源程序:
public class InitializeBlockClass { public int field=100; { field=200; } public InitializeBlockClass(int value) { this.field=value; } public InitializeBlockClass() { } public static void main(String [] args) { InitializeBlockClass obj=new InitializeBlockClass(); System.out.println(obj.field); obj=new InitializeBlockClass(300); System.out.println(obj.field); } }
运行结果:
由以上两程序对比可知类成员变量的赋值首先按照初始化块和指定默认值的排列顺序依次执行,然后在执行构造函数的赋值。
源程序:
public class Test { public int a=5; public void test() { System.out.println("实例方法"); } public static void main(String [] args) { Test obj=new Test(); obj.test(); System.out.println("实例变量a="+obj.a); } }
运行结果:
由程序代码可知对于非静态的变量或方法可以通过创建对象,由对象.成员的方式访问。