Episode-2 开始研究Java的语法吧!
在上一篇文章中,我介绍了Java的环境搭建以及一个具体程序的编写和执行
现在我们可以探讨一些更加深奥的东西
关于Java中各个类的执行顺序的研究
这可能有一点抽象
我们都知道,java中定义一个方法是这样做的:
在Java中,main函数必须定义为public static void main()
其中,static将声明一个静态对象,该对象在类(class)被定义时加载。
我们可以用下面这个程序来切身体会这一点:
public class MyClass {
static {
System.out.println("Static block 1");
}
static {
System.out.println("Static block 2");
}
{
System.out.println("Instance block 1");
}
{
System.out.println("Instance block 2");
}
public MyClass() {
System.out.println("Constructor");
}
public static void staticMethod() {
System.out.println("Static method");
}
public void instanceMethod() {
System.out.println("Instance method");
}
public static void main(String[] args) {
System.out.println("Before creating object");
MyClass.staticMethod();
System.out.println("After calling static method");
MyClass obj1 = new MyClass();
System.out.println("After creating first object");
MyClass obj2 = new MyClass();
System.out.println("After creating second object");
obj1.instanceMethod();
System.out.println("After calling instance method on first object");
obj2.instanceMethod();
System.out.println("After calling instance method on second object");
}
}
运行上述程序,会得到这样的结果:
Static block 1
Static block 2
Before creating object
Static method
After calling static method
Instance block 1
Instance block 2
Constructor
After creating first object
Instance block 1
Instance block 2
Constructor
After creating second object
Instance method
After calling instance method on first object
Instance method
After calling instance method on second object
我们可以发现,在创建对象之前,两个static代码块已经完成了输出。
在之后创建对象后,两个static不会再次输出
这次的博客可能有点难,我还会进行修改ORZ