java运行顺序

关于java程序运行过程中先后顺序如下实例可以很轻松的帮助理解,首先先看下面例子:

package test;
import static test_1.PrintDome.*;
public class StaticAndCoustor extends LittleBug{

 public static void main(String[] args) {
  // TODO Auto-generated method stubs
  print("mian function");
  StaticAndCoustor staticAndCoustor = new StaticAndCoustor();

 }

}

class Insert{
 private int numberOne=9;
 private static int numberTwo=printInt("Insert.static.numberTwo");
 Insert(){
  print("Insert courstor");
  print("numberOne="+numberOne);
  print("numberTwo="+numberTwo);
 }
}

class Beetle extends Insert{
 private int numberThr=8;
 private static int numberFour=printInt("Beetle.static.numberFour");
 Beetle(){
  print("Beetle  courstor");
  print("numberThr="+numberThr);
  print("numberFour="+numberFour);
 }
}

class LittleBug extends Beetle {
 private int numberFiv=8;
 private static int numberSix=printInt("Beetle.static.numberSix");
 LittleBug(){
  print("LittleBug  courstor");
  print("numberFiv="+numberFiv);
  print("numberSix="+numberSix);
 }
 
}

 

在StaticAndCoustor 上运行java时,首先第一件事情就是试图访问StaticAndCoustor.main()方法(static方法),于是加载器开始找出StaticAndCoustor.class文件,在加载它的时候,编译器会发现,它向上有一个基类(由extends 知道),于是将继续记载基类,不管是否要new一个积累对象,积累都会被加载。

     当加载到基类时,又会发现再往上有第二个基类,于是开始加载第二个基类,依次往上加载。。。当加载到根基类时,根基类中的static将会被初始化(本列中Insert为根基类),也就是被执行,然后是下一级子类中的static,以此类推。

       所有的运行时用的类被加载完成,接下来,mian函数中会向下执行 print("mian function");之后执行到创建对象时,所有的基本类型被初始化为默认值,对象为null(这是通过编译器对对象内存进行二进制零实现的)。然后完成构造器的创建,构造器创建也是从根基类,一级一级往下创建。

 

以上程序返回结果如下:

--------------------------------------------------------------------------

Insert.static.numberTwo
Beetle.static.numberFour
Beetle.static.numberSix
mian function
Insert courstor
numberOne=9
numberTwo=0
Beetle  courstor
numberThr=8
numberFour=0
LittleBug  courstor
numberFiv=8
numberSix=0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值