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程序执行顺序的详细解释: 1. **静态块**: 静态块是在类加载时执行的,它不依赖于类的实例。在上述代码中,`Mastiff`类的静态块`static block`会在类被加载到JVM(Java虚拟机)时执行,这是在任何...
通过编写第一个Java程序,读者可以直观地了解Java程序的结构,并通过运行这个程序来加深对Java程序执行过程的理解。 总之,本教程从Java语言的基础知识入手,逐步带领读者深入Java的世界。通过对编程语言、程序设计...
顺序结构是指程序的执行顺序,从上到下依次执行。选择结构是指根据条件选择执行不同的分支,包括if语句和switch语句。循环结构是指重复执行某个语句,包括for语句、while语句和do-while语句。 四、JAVA Application...
总的来说,将Java程序制作成可执行程序或安装程序,需要根据目标平台和用户需求选择合适的方法。无论是简单的JAR运行,还是复杂的安装程序生成,都有相应的工具和技术支持。理解这些方法可以帮助开发者更好地分发和...
在给定的标题"java程序自动重新启动"中,我们可以理解这是一个实现了自动重启逻辑的Java程序。描述指出,这个程序由三个.java文件组成:Test.java、Watch.java和AbstractRun.java,它们构成了一个简单的自动重启系统...
Java程序调用存储过程是数据库操作中的常见任务,特别是在处理大量数据或需要高效执行复杂业务逻辑时。存储过程是预编译的SQL语句集合,它们可以提高性能、减少网络流量,并提供更好的安全性。在Java应用程序中调用...
Java类的执行顺序是编程过程中一个非常重要的概念,特别是在深入理解和优化代码性能时。本文将详细探讨Java类的加载、初始化、执行等步骤,并通过实例分析阿里面试中可能涉及的相关问题,结合流程图帮助理解这一过程...
本篇是学习 Java 语言程序设计的入门教程,涵盖了计算机组成、计算机运行原理、Java 语言特点、Java 程序执行过程、对象和类概念等基础知识_point11。 point1.了解计算机的组成及运行原理,了解简单机器语言程序的...
以下是对Java程序初始化顺序的详细说明: 1. **类加载阶段**: - **加载**:当Java虚拟机(JVM)首次遇到一个类的引用时,会通过类加载器进行加载。加载过程包括找到类的.class文件,读取其字节码,并转化为内存中...
在Java开发过程中,经常需要与数据库进行交互,尤其是在处理大量数据时,如何高效地执行SQL语句变得尤为重要。本文将详细介绍如何利用Java进行批量SQL执行,包括其背景、实现原理、代码示例及优化策略等。 #### 一...
在存储过程和Java程序的上下文中,SQL*Loader可能用于准备数据,然后由存储过程处理或通过Java程序进行进一步操作。 综上所述,"存储过程调用Java程序"涉及到的主要知识点包括: 1. 存储过程的概念和使用。 2. ...
在IT行业中,尤其是在Windows操作系统环境下,我们经常需要执行一些Java程序。为了方便快捷地运行这些程序,我们可以将它们封装到批处理(.bat)文件中。这样,只需双击.bat文件,就可以自动调用Java虚拟机(JVM)...
"JAVA程序编辑器[java程序编写器]"是一个专为Java初学者设计的工具,它简化了代码编写、编译和调试的过程,使学习变得更加便捷。 这个编辑器的主要特点可能包括: 1. **用户友好界面**:对于初学者,简洁明了的...
Java文件执行顺序是Java编程语言中一个非常重要的概念,它决定了Java程序的执行顺序和入口。 Java文件执行顺序主要指的是Java文件的编译和执行过程中,JVM(Java虚拟机)是如何寻找入口点,并执行main方法的。 ...
它是程序执行的起点,用于初始化和运行程序。 3. 控制流:Java提供了if语句、switch语句、for循环、while循环等控制流结构,用于决定程序的执行路径。在实例中,可能会有根据用户输入或特定条件执行不同代码段的...
总之,Java 程序设计是一项需要持续学习和实践的过程。只有深入理解 Java 的核心概念,熟练运用其工具和框架,才能真正发挥 Java 的潜力,成为一名优秀的 Java 开发者。无论是为了找到高薪的工作还是为了提升自己的...
11. **题目:** 在编写执行JAVA程序的过程中需要用到一些工具,SUN公司为我们提供了一套JDK工具,它主要包括:javac.exe、java.exe、_javadoc.exe(或java文档生成器)____、javap.exe、jkb.exe **解析:** JDK工具集...
在Java程序执行过程中,对方法的每次调用,Java虚拟机为其分配一个“Java框架”,每个框架都包含一个操作数栈(Operand Stack)以及局部变量集(Local Variables)。其中,操作数栈的每一项占一个宇(slot)。Java...
Java程序通常运行在Java虚拟机(JVM)上,但为了让非Java开发人员或没有安装Java环境的用户也能轻松运行程序,我们可以将其打包成可执行的Windows程序(.exe文件)。这里提到的“Java程序打包成exe执行文件工具”是...