JAVA程序执行顺序

先给结论:

执行顺序:父类静态块->子类静态块(main函数执行前)->父类块->父类构造器->子类块->子类构造器

赋值顺序:成员变量赋值->块赋值->构造器赋值

 1 class A{
 2     static{System.out.println("Class A");}
 3     {System.out.println("Class c");}
 4     public A(){
 5         System.out.println("this class A");
 6     }
 7 }
 8
 9 public class Test1 extends A{
10     static {System.out.println("class B");}
11     public Test1(){
12         System.out.println("this class B");
13     }
14     {System.out.println("class d");}
15     public static void main(String[] args) {
16         System.out.println("----start ---");
17         new Test1();
18         new Test1();
19         System.out.println("---end---");
20     }
21 }
22
23 结果为:
24 Class A
25 class B
26 ----start ---
27 Class c
28 this class A
29 class d
30 this class B
31 Class c
32 this class A
33 class d
34 this class B
35 ---end---                        

****

赋值步骤为

  1. 父类的静态变量赋值
  2. 自身的静态变量赋值
  3. 父类成员变量赋值
  4. 父类块赋值
  5. 父类构造器赋值
  6. 自身成员变量赋值
  7. 自身块赋值
  8. 自身构造器赋值
时间: 2024-08-01 06:39:18

JAVA程序执行顺序的相关文章

深入理解Java程序执行顺序

下面将从一道阿里巴巴试题详细分析Java程序执行顺序. 阿里巴巴试题 public class Test { public static int k = 0; public static Test t1 = new Test("t1"); public static Test t2 = new Test("t2"); public static int i = print("i"); public static int n = 99; publi

深入了解Java程序执行顺序

先看代码:class Parent {         public static String p_StaticField = "父类--静态变量";        public String p_Field = "父类--变量";          // 下面这些是干什么的?解释以下,不是很明白     static {             System.out.println(p_StaticField);             System.out.p

java程序执行过程&基本数据类型

1. 程序load到内存. 2. 找到程序入口方法(main())开始执行. 3. 程序在内存中的存放 3.1 代码段(code segment)--------存放代码 3.2 数据段(data segment)--------存放静态变量,字符串常量 3.3 栈(stack)                ----------存放局部变量 3.4 堆(heap)                -----------存放new出来的东西 ----------------------------

java 程序执行输出有两种简单方式

java 程序执行输出有两种简单方式: 1. System.out.println("需要输出的内容"): 该方法可参看运行一个简单的Java程序 结果图: 2. System.out.print("需要输出的内容"): 1 public class HelloWorld 2 { 3 //Java程序的入口方法,程序将从这里开始运行 4 public static void main(String[] args) 5 { 6 //向控制台打印一条语句 7 Syste

java的执行顺序

Java 1.java的执行顺序 java(编译)   Java(运行)       编写源码----------->字码文件----------->执行 2.编写源码注意 a.类名和文件名一致. b.括号要成对出现. 3.println和print的区别 println会换行    print不会 4.转义字符 \n表示换行     \t表示空格 5.java注释 //:单行注释   /*  */:表示多行注释  /**   */表示文本注释 6.java代码规范 a.类名要用oublic修

java程序执行SQL脚本文件

首先引入ibatis-common-2.jar包 import com.ibatis.common.jdbc.ScriptRunner; import com.ibatis.common.resources.Resources; jpetstore测试代码如下: package com.ibatis.jpetstore.test; import java.sql.DriverManager; import java.util.Properties; import com.ibatis.commo

java程序执行sql文件

List<String> sqlFileList = new ArrayList<String>();从文件读放内容到按分号放到sqlFileListpublic List<String> readSqlFiles(List<String> fileNameList) {List<String> sqlList = new ArrayList<String>();for (String fileName : fileNameList)

Flex 程序执行顺序!

Flex 执行加载过程会有几个概念:preloader, SystemManager, Flex Application! flex 界面初始化时,看到的 Loading 加载条,那是 flex 自动执行的一个步骤,他是在 preloader 时进行的. 此时 preloader 执行是 systemManager 控制下的第一帧! 第二帧才是真正的主程序加载,也就 <s:Application 部分的加载... -----------------------------------------

java中子类继承父类程序执行顺序问题

Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说比较简单,用程序也很容易验证.比如新建一个测试父类. public class FatherTest { private String name; FatherTest(){ System.out.println("--父类的无参构造函数--"); } FatherTest(String name){ this.name=name; System.out