1:java语言跨平台原理
JVM屏蔽了底层运行平台的差别,真正实现了“一次编译,随处运行”;
2:Java运行过程
3:代码执行顺序
package lesson.java;
public class Animal {
protected String name;
protected int age;
static int a=0;
{
System.out.println("Animal 构造代码块 输出静态变量a:"+a);
//System.out.println("Animal 构造代码块 输出变量b:"+b);编译报错
}
static{
int b=0;
System.out.println("Animal 静态代码块 输出静态变量a:"+a);
System.out.println("Animal 静态代码块 输出变量b:"+b);
}
Animal(String name){
this.name=name;
System.out.println("Animal构造函数");
}
}
package lesson.java;
public class Dog extends Animal{
Dog(String name) {
super(name);
System.out.println("Dog构造函数");
}
static int a=0;
{
System.out.println("Dog 构造代码块 输出静态变量a:"+a);
//System.out.println("Animal 构造代码块 输出变量b:"+b);编译报错
}
static{
int b=0;
System.out.println("Dog 静态代码块 输出静态变量a:"+a);
System.out.println("Dog 静态代码块 输出变量b:"+b);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Dog d=new Dog("汪汪");
}
}
运行结果:
执行顺序:
(1)父类静态变量(变量–代码块)
(2)子类静态代码块(变量–代码块)
(3)父类构造代码块,构造方法
(4)子类构造代码块,构造方法