一:1.
2.程序源代码:
1 class InitializeBlockClass 2 { 3 { 4 field=200; 5 } 6 public int field=100; 7 public InitializeBlockClass(int value) 8 { 9 this.field=value;10 }11 public InitializeBlockClass(){}12 public static void main(String[] args) 13 {14 InitializeBlockClass obj=new InitializeBlockClass();15 System.out.println(obj.field); // ?16 obj=new InitializeBlockClass(300);17 System.out.println(obj.field); // ?18 }19 }
3.程序结果截图:
4.结果分析:
(1)
{
field=200;
}
该部分为类的初始化块,可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员。类的这种“没有名字”的“成员”,多用于初始化类的字段。
(2)
public int field=100; 在定义时进行初始化,此时field = 100;
System.out.println(obj.field); 输出field的值100。
(3)
obj=new InitializeBlockClass(300);
System.out.println(obj.field);
利用构造方法进行初始化,将field的值初始化为300,输出300。
5.规律总结:
Java进行初始化的地方有两个:初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块。静态初始化块是类中由static修饰的初始化块,实例初始化块为类中没有任何关键字修饰的初始化语句。
如果在主函数中创建对象时没有形参时,如果在类中定义了公共的变量并给与了赋值,那么就会把值赋给主函数中的变量,再调用类中的默认构造函数,如果在主函数中创建对象时有形参,则调用类中对应的构造函数。
二:1.
2.程序源代码:
class Root{ static{ System.out.println("Root的静态初始化块"); } { System.out.println("Root的普通初始化块"); } public Root() { System.out.println("Root的无参数的构造器"); }}class Mid extends Root{ static{ System.out.println("Mid的静态初始化块"); } { System.out.println("Mid的普通初始化块"); } public Mid() { System.out.println("Mid的无参数的构造器"); } public Mid(String msg) { //通过this调用同一类中重载的构造器 this(); System.out.println("Mid的带参数构造器,其参数值:" + msg); }}class Leaf extends Mid{ static{ System.out.println("Leaf的静态初始化块"); } { System.out.println("Leaf的普通初始化块"); } public Leaf() { //通过super调用父类中有一个字符串参数的构造器 super("Java初始化顺序演示"); System.out.println("执行Leaf的构造器"); }}
public class TestStaticInitializeBlock
{ public static void main(String[] args) { new Leaf();}
}3.程序结果截图:
4.规律总结:静态初始化块的执行顺序:
创建子类型的对象时,也会导致父类函数的执行,先执行静态函数,在执行public函数,最后执行函数。
三:1.
2.程序源代码:
1 package lei1; 2 3 public class Fangfa 4 { 5 public static void a() 6 { 7 System.out.println("类的方法"); 8 } 9 public void b()10 {11 System.out.println("对象的方法");12 }13 }14 public class Jingshi 15 { public static void main(String[] args)16 {17 Fangfa.a();18 Fangfa e=new Fangfa();19 e.b();20 e.a();21 }22 }
3.结果截图: