final关键字和类中方法体方法块执行先后问题
final 修饰类、方法、变量
package com.dayuanit.animal;
public class Dog {
public String name;
public static int age;
public static final int AGE = 13;
public static final int MY_PI = 19;
public Dog() {
System.out.println(1);
}
{
System.out.println(2);
}
static{
System.out.println(3);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
package com.dayuanit.human;
import com.dayuanit.animal.Dog;
public class Person {
public static void main(String[] args) {
System.out.println(Dog.MY_PI);
System.out.println("********************");
System.out.println(Dog.age);
System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$");
Dog dog = new Dog();
System.out.println(dog.name);
}
}
代码执行的结果如下:
分析如下:
JVM虚拟机会先在main方法中按照程序由上至下执行,首先选择的是由static final修饰的MY_PI;因为是全局变量可以直接由类名调用;在执行static修饰的age时,会先到类中然后按照静态方法先于静态类的顺序执行;在执行由构造函数调用的name时,会先进入dog类中,然后寻找到方法代码块,构造函数最后是当前变量的顺序执行代码!
以上为代码执行的顺序问题!
阅读API文档:
在阅读API文档的时候,我们首先需要确认我们需要寻找的方法属于什么类型(以String类型为例子),首先我们需要确定我们需要寻找方法的为String类型,然后在API文档中输入搜索,点击进入这个类,确认这个类属于哪个包,String属于java.lang(默认导入),然后确定我们需要的方法是什么方法(入参,返回值类型,功能),例如我们需要将int类型转为String类型,这样子我们就需要寻找入参为int型,return是String类型的一个方法,然后看方法的具体描述是什么功能,最后我们确定为public static String valueOf(int i )方法,然后点击进入观看它的具体使用,最后在我们的程序中使用它完成功能!!!