下面代码执行后最终的结果是:
public class StaticDemoSupper { static { System.out.println("A"); } /** * */ public StaticDemoSupper() { System.out.println("B"); } } public class StaticDemoChild extends StaticDemoSupper { static{ System.out.println("C"); } /** * */ public StaticDemoChild() { System.out.println("D"); } public static void main(String[] args) { new StaticDemoChild(); } }
A C B D
执行顺序是:父类的静态代码块,子类的静态代码块 父类的构造方法,子类的构造方法
(1) 遇 到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成 这4条指令的最常见的Java代码场景是:使用new关键字实例化对象的时候,读取或设置一个类的静态字段(被final修饰、已在编译期把结果放入常量 池的静态字段除外)的时候,以及调用一个类的静态方法的时候。
(2) 使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行过初始化,则需要先触发其初始化。
(3) 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化。
(4)当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类。
只有上述四种情况会触发初始化,也称为对一个类进行主动引用,除此以外,所有其他方式都不会触发初始化,称为被动引用
静态代码块中会在编译阶段初始化到类的常量池中
相关推荐
java面试题静态加载顺序构造方法 继承与static 面试题目如下:请写出程序执行完成之后的结果。 package extend; public class X { Y y=new Y(); static{ System.out.println("tttt"); } X(){ System....
Java 面试题、Java 框架面试题 Java 面试题是 Java 开发人员面试的必备知识,涵盖了 Java 基础知识、Java 框架、Java 集合框架、Java 多线程、Java 网络编程等方面的知识点。在本文中,我们将对 Java 面试题进行...
Java作为一门广泛使用的编程语言,其笔试题涵盖了基础语法、数据结构、算法、多线程、网络编程、设计模式等多个方面。本资料集合了大量Java笔试题,旨在帮助求职者全面复习并准备Java相关的笔试环节,同时包含了各大...
Java类的执行顺序是编程过程中一个非常重要的概念,特别是在深入理解和优化代码性能时。本文将详细探讨Java类的加载、初始化、执行等步骤,并通过实例分析阿里面试中可能涉及的相关问题,结合流程图帮助理解这一过程...
Java面试题之代码与编程题 在这篇文章中,我们将讨论Java面试题中的一些代码与编程题,涵盖Singleton模式、继承时类的执行顺序问题、内部类的实现方式等几个方面。 Singleton模式 Singleton模式是一种常用的设计...
### JavaSE面试题知识点梳理 #### 一、Java 跨平台原理 Java 语言的核心优势之一在于其跨平台性,即“一次编写,到处运行”(Write Once, Run Anywhere)。这种特性主要得益于 Java 字节码(Bytecode)及其运行...
根据给定的文件内容,我们可以总结出一系列与Java面试相关的知识点。下面将详细解析每一道题目涉及的关键概念。 ### 第一部分:基础知识 #### 1. final, finally, finalize的区别 - **final**: 用于声明变量、方法...
根据给定的文件信息,我们将从这些选择题中提取出重要的Java知识点,并对每个知识点进行详细的解释。 ### Java基础知识 1. **main方法的格式** - 正确选项:`d) public static void main(String[] args)` - ...
### Java笔试题及答案解析 #### 一、作用域public, private, protected,以及不写时的区别 在Java中,类成员(如方法、变量)的访问控制可以通过四种不同的访问修饰符来限定:`public`、`private`、`protected`以及...
根据给定的信息,我们将逐一分析这10个Java面试题所涉及的知识点: ### 1. JVM 对频繁调用的方法做了哪些优化? JVM(Java虚拟机)在运行时会针对频繁调用的方法进行多种优化措施,以提高程序执行效率。主要的优化...
java开发岗企业常考面试题目 1.GC垃圾回收处理器,回收内存 托管资源: 非托管资源:手动释放资源 2.堆内存:new出来的 栈内存:基本数据类型的变量,方法的返回值,对象的引用(对象的引用地址) 3.static:存放...
### Java面试题知识点概览 #### 面向对象概念 1. **super()与this()的区别**: - `super()`用于调用父类的构造方法或父类成员方法。 - `this()`用于调用本类中的其他构造方法。 2. **作用域public, protected, ...
### Java笔试面试题及答案解析知识点 #### 1. 整型溢出与浮点数特殊值 **问题1:** 存在使`i+1 的数吗? **答案:** 存在。 **解析:** 如果变量`i`为`int`类型,那么当`i`取`int`所能表示的最大整数值时(即`...
以下是一些常见的 Java 面试题及其答案,涵盖基础概念、数据类型、字符串处理等方面。 1. JDK 和 JRE 有什么区别? JDK(Java Development Kit)是Java开发工具包,它提供了开发和运行Java程序所需的所有工具,包括...
在面试中,面试官可能会通过这种类型的题目来评估应聘者对Java内存模型的理解,以及他们在编写代码时是否能考虑到这些初始化规则,从而避免潜在的陷阱。因此,掌握类的初始化顺序是每个Java开发者必备的知识点。
### Java程序员经典笔试面试题汇总知识点解析 #### 一、程序执行顺序与静态变量初始化 **题目背景**:本题目旨在考察Java程序中类的加载过程以及不同成员(如静态变量、非静态变量等)的初始化顺序。 **题目示例*...
### Java面试题经典32问解析 #### 一、final,finally,finalize的区别 - **final**:这是一个关键字,用于修饰类、变量或方法。如果一个类被声明为`final`,表示它不能被继承,即不能有子类。同样地,如果一个...
Java面试笔试题大全是针对Java开发者的一份综合资源,涵盖了多个知名企业的面试和笔试问题,旨在帮助求职者全面准备技术面试。这份资料通常包括各种Java基础、进阶、设计模式、多线程、数据结构与算法、框架以及面试...
《JAVA面试题解惑系列——类的初始化顺序》 在Java编程中,理解类的初始化顺序是面试中常见的考察点,因为它直接关系到程序的执行逻辑。本文将深入探讨类的初始化过程,以及在继承场景下如何理解这个过程。 首先,...
根据给定的信息,我们可以整理出以下相关知识点: ### 1. 使用`StringTokenizer`分割字符串 在提供的代码片段中,...这些知识点涵盖了给定标题和描述中提到的面试题涉及的主要内容,希望对准备面试的朋友有所帮助。