`
yanxiaoyu
  • 浏览: 1165 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java程序执行顺序

阅读更多
public static void main(String[] args) {
    ChildClass cc = new ChildClass();
    ChildClass cc2 = new ChildClass();
}

 一直都常听同学们和老师们讲过一些关于java程序中的一些执行流程和执行顺序,从来也没自己系统的总结过。今天突来兴趣,总结一下,也算给自己做了学校笔记。

一、首先在了解程序的一些加载顺序流程开始前,首先先来了解一下一个对象的常见组成部分。变量,常量,静态变量,构造函数体,静态代码块,代码块,方法体。当我们在代码中实例一个对象 new()的时候,在程序的内存中发生了怎样的变化?这些变化是按照怎样的顺序发生的呢?


一、在实例一个对象之前,jvm就会开始为加载做一些准备工作,静态变量,常量会被优先加载到内存的方法区内,常量放入方法区里的常量池中。在真正new一个对像时,对象的执行顺序是:静态代码块——》代码块——》构造函数。

代码1:

public class ChildClass{
 
 static String sst = "静态变量";
 String str = "子类成员变量赋值";

 public ChildClass(){
  System.out.println("我是子类构造");
 }
 {
   System.out.println("子类代码块");
 }
 static {
    System.out.println("子类静态代码块");
 }
 public void getStr(){
    System.out.println("子类方法--->"+str);
 }
 public static void main(String[] args) {
    ChildClass cc = new ChildClass();
}
}

 

执行结果:

子类静态代码块
子类代码块
我是子类构造

 

这里还要特别说明一下,关于静态代码块的问题,同一个类如果在进行多次实例的话,只有在第一次执行静态代码块。

 public static void main(String[] args) {
    ChildClass cc = new ChildClass();
    ChildClass cc2 = new ChildClass();
}

 执行结果:

子类静态代码块
子类代码块
我是子类构造
子类代码块
我是子类构造

 

二、类与类之间存在extends的关系,如果存在这一次关系后,程序的执行顺序是什么呢。不多说,先看代码

代码二:

public class ChildClass extends FatherClass{
	
	static String sst = "静态变量";
	String str = "子类成员变量赋值";

   public ChildClass(){
	System.out.println("我是子类构造");
	}
	
	{
        System.out.println("子类代码块");
	}
	static {
        System.out.println("子类静态代码块");
	}
 public static void main(String[] args) {
	 ChildClass cc = new ChildClass();
 	}
}

 

代码三:

public class FatherClass {

	String str = "父类成员变量赋值";
	 	
        public FatherClass() {
	System.out.println("我是父类构造");
	}
	{
	    System.out.println("父类代码块");
	 }  
	
	 static {
	    System.out.println("父类静态代码块");
	 }  	
}

 

执行结果:

父类静态代码块
子类静态代码块
父类代码块
我是父类构造
子类代码块
我是子类构造

 

如果 同样的对象继续实例化,父类和子类的静态代码块依然是只执行一次。

 

分享到:
评论

相关推荐

    JAVA程序执行顺序,你了解了吗.doc

    以下是关于JAVA程序执行顺序的详细解释: 1. **静态块**: 静态块是在类加载时执行的,它不依赖于类的实例。在上述代码中,`Mastiff`类的静态块`static block`会在类被加载到JVM(Java虚拟机)时执行,这是在任何...

    Java语言程序设计教程(Java 7)——入门与提高篇01

    通过编写第一个Java程序,读者可以直观地了解Java程序的结构,并通过运行这个程序来加深对Java程序执行过程的理解。 总之,本教程从Java语言的基础知识入手,逐步带领读者深入Java的世界。通过对编程语言、程序设计...

    JAVA程序设计.pdf

    顺序结构是指程序的执行顺序,从上到下依次执行。选择结构是指根据条件选择执行不同的分支,包括if语句和switch语句。循环结构是指重复执行某个语句,包括for语句、while语句和do-while语句。 四、JAVA Application...

    如何制作Java可执行程序

    总的来说,将Java程序制作成可执行程序或安装程序,需要根据目标平台和用户需求选择合适的方法。无论是简单的JAR运行,还是复杂的安装程序生成,都有相应的工具和技术支持。理解这些方法可以帮助开发者更好地分发和...

    java程序自动重新启动

    在给定的标题"java程序自动重新启动"中,我们可以理解这是一个实现了自动重启逻辑的Java程序。描述指出,这个程序由三个.java文件组成:Test.java、Watch.java和AbstractRun.java,它们构成了一个简单的自动重启系统...

    Java程序调用存储过程

    Java程序调用存储过程是数据库操作中的常见任务,特别是在处理大量数据或需要高效执行复杂业务逻辑时。存储过程是预编译的SQL语句集合,它们可以提高性能、减少网络流量,并提供更好的安全性。在Java应用程序中调用...

    Java类执行顺序详解+实例(阿里面试题)+详细讲解+流程图

    Java类的执行顺序是编程过程中一个非常重要的概念,特别是在深入理解和优化代码性能时。本文将详细探讨Java类的加载、初始化、执行等步骤,并通过实例分析阿里面试中可能涉及的相关问题,结合流程图帮助理解这一过程...

    java语言程序设计基础篇(第八版)-完整版ppt课件.ppt

    本篇是学习 Java 语言程序设计的入门教程,涵盖了计算机组成、计算机运行原理、Java 语言特点、Java 程序执行过程、对象和类概念等基础知识_point11。 point1.了解计算机的组成及运行原理,了解简单机器语言程序的...

    java程序初始化顺序

    以下是对Java程序初始化顺序的详细说明: 1. **类加载阶段**: - **加载**:当Java虚拟机(JVM)首次遇到一个类的引用时,会通过类加载器进行加载。加载过程包括找到类的.class文件,读取其字节码,并转化为内存中...

    java批量执行SQL

    在Java开发过程中,经常需要与数据库进行交互,尤其是在处理大量数据时,如何高效地执行SQL语句变得尤为重要。本文将详细介绍如何利用Java进行批量SQL执行,包括其背景、实现原理、代码示例及优化策略等。 #### 一...

    存储过程调用java程序

    在存储过程和Java程序的上下文中,SQL*Loader可能用于准备数据,然后由存储过程处理或通过Java程序进行进一步操作。 综上所述,"存储过程调用Java程序"涉及到的主要知识点包括: 1. 存储过程的概念和使用。 2. ...

    java用bat运行程序

    在IT行业中,尤其是在Windows操作系统环境下,我们经常需要执行一些Java程序。为了方便快捷地运行这些程序,我们可以将它们封装到批处理(.bat)文件中。这样,只需双击.bat文件,就可以自动调用Java虚拟机(JVM)...

    JAVA程序编辑器[java程序编写器]

    "JAVA程序编辑器[java程序编写器]"是一个专为Java初学者设计的工具,它简化了代码编写、编译和调试的过程,使学习变得更加便捷。 这个编辑器的主要特点可能包括: 1. **用户友好界面**:对于初学者,简洁明了的...

    浅谈Java文件执行顺序、main程序入口的理解

    Java文件执行顺序是Java编程语言中一个非常重要的概念,它决定了Java程序的执行顺序和入口。 Java文件执行顺序主要指的是Java文件的编译和执行过程中,JVM(Java虚拟机)是如何寻找入口点,并执行main方法的。 ...

    清华Java程序设计实例教程

    它是程序执行的起点,用于初始化和运行程序。 3. 控制流:Java提供了if语句、switch语句、for循环、while循环等控制流结构,用于决定程序的执行路径。在实例中,可能会有根据用户输入或特定条件执行不同代码段的...

    对Java程序设计的感想.doc

    总之,Java 程序设计是一项需要持续学习和实践的过程。只有深入理解 Java 的核心概念,熟练运用其工具和框架,才能真正发挥 Java 的潜力,成为一名优秀的 Java 开发者。无论是为了找到高薪的工作还是为了提升自己的...

    JAVA程序设计习题库及答案(非常全面)

    11. **题目:** 在编写执行JAVA程序的过程中需要用到一些工具,SUN公司为我们提供了一套JDK工具,它主要包括:javac.exe、java.exe、_javadoc.exe(或java文档生成器)____、javap.exe、jkb.exe **解析:** JDK工具集...

    Java字节码执行的可并行性分析及方法.pdf

    在Java程序执行过程中,对方法的每次调用,Java虚拟机为其分配一个“Java框架”,每个框架都包含一个操作数栈(Operand Stack)以及局部变量集(Local Variables)。其中,操作数栈的每一项占一个宇(slot)。Java...

    Java程序打包成exe执行文件工具

    Java程序通常运行在Java虚拟机(JVM)上,但为了让非Java开发人员或没有安装Java环境的用户也能轻松运行程序,我们可以将其打包成可执行的Windows程序(.exe文件)。这里提到的“Java程序打包成exe执行文件工具”是...

Global site tag (gtag.js) - Google Analytics