关闭

java运行顺序

标签: java实例
75人阅读 评论(0) 收藏 举报
分类:

关于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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:450次
    • 积分:64
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档