LearnJava(四) | Java代码块执行顺序测试

简介: 最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下。如有错漏,希望路过的大佬指出来,以便我进行更改。  先上代码吧!public class ClassA { private static St...

最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下。
如有错漏,希望路过的大佬指出来,以便我进行更改。

  先上代码吧!

public class ClassA {
    private static String a = print("A");
    
    static {
        System.out.println(a+":A——静态块");
    }
    {
        System.out.println("A——构造块");
    }
    public ClassA() {
        System.out.println("A——默认构造方法");
    }
    public ClassA(String name) {
        System.out.println("A——带参构造方法");
    }
    
    public static String print(String className) {
        System.out.println(className+"——静态属性");
        return className;
    }
}
public class ClassB extends ClassA{
private static String b = print("B");
    
    static {
        System.out.println(b+":B——静态块");
    }
    {
        System.out.println("B——构造块");
    }
    public ClassB() {
        System.out.println("B——默认构造方法");
    }
    public ClassB(String name) {
        System.out.println("B——带参构造方法");
    }
}
public class ClassTest {

    public static void main(String[] args) {
        System.out.println("start");
        ClassB laughter = new ClassB("laughter");

        System.out.println("------------------");
        ClassB Somnus = new ClassB();
    }
}

  接下来是测试结果

img_a15de8bbe8f5e43ab8481be8c3449e53.png

总结

结合我查询的资料以及测试结果,可以得知执行顺序如下:

  1. main 函数作为入口,按行依次执行;
  2. 静态属性 > 静态方法声明 > 静态块;
  3. 动态属性 > 动态方法声明 > 构造块;
  4. 构造方法。

补充说明:

  1. 创建一个对象时,无论是否带参数,都会先调用它的父类(如果存在父类)的默认构造方法。
相关文章
|
3天前
|
Java 测试技术 Python
《手把手教你》系列基础篇(七十九)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-下篇(详解教程)
【6月更文挑战第20天】TestNG是一个Java测试框架,提供两种测试方法依赖机制:强依赖(所有前置方法成功后才运行)和弱依赖(即使前置方法失败,后置方法仍运行)。文中通过代码示例展示了这两种依赖如何实现,并解释了当依赖方法失败时,如何影响后续方法的执行。文章还包含了TestNG Suite的运行结果截图来辅助说明。
22 8
|
2天前
|
存储 算法 安全
深入理解Java集合框架:基础类型与代码效率优化
Java集合框架是编程的核心工具,包括List、Set、Queue和Map接口及多种实现类,如ArrayList、LinkedList、HashSet、TreeSet等。理解它们的内部机制有助于优化代码。选择适合的集合类型、避免类型转换、使用并发集合和管理容量可以提升效率。深入学习这些概念能改善代码性能和可维护性。
|
2天前
|
Java 测试技术 Python
《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)
【6月更文挑战第21天】本文介绍了TestNG中测试方法的依赖执行顺序。作者通过一个实际的自动化测试场景展示了如何设计测试用例:依次打开百度、搜索“selenium”、再搜索“selenium+java”。代码示例中,`@Test`注解的`dependsOnMethods`属性用于指定方法间的依赖,确保执行顺序。如果不设置依赖,TestNG会按方法名首字母排序执行。通过运行代码,验证了依赖关系的正确性。
19 4
|
2天前
|
存储 安全 Java
Java集合框架核心组件理解这些基础类型能优化代码效率。
【6月更文挑战第21天】Java集合框架核心组件:ArrayList快速随机访问,适合大量查找;LinkedList擅于插入删除,不适于随机访问;HashMap是键值对存储,O(1)查找删除。选择取决于应用场景:频繁访问选ArrayList,频繁增删选LinkedList,键值查找选HashMap。理解这些基础类型能优化代码效率。
7 1
|
3天前
|
Java
【代码诗人】Java线程的生与死:一首关于生命周期的赞歌!
【6月更文挑战第19天】Java线程生命周期,如诗般描绘了从新建到死亡的旅程:创建后待命,`start()`使其就绪,获得CPU则运行,等待资源则阻塞,任务完或中断即死亡。理解生命周期,善用锁、线程池,优雅处理异常,确保程序高效稳定。线程管理,既是艺术,也是技术。
|
3天前
|
Java
【代码诗人】Java线程的生与死:一首关于生命周期的赞歌!
【6月更文挑战第19天】在Java中,线程经历新建、就绪、运行、阻塞和死亡5个阶段。通过`start()`从新建转为就绪,进而可能运行;阻塞可能因等待资源;完成任务或中断后死亡。管理线程生命周期涉及合理使用锁、线程池、异常处理和优雅关闭,如使用`volatile`和中断标志。了解这些,能提升程序效率和稳定性。
|
3天前
|
算法 搜索推荐 Java
二叉树的基本概念、常见操作以及如何使用Java代码
二叉树的基本概念、常见操作以及如何使用Java代码
8 1
|
1天前
|
前端开发 JavaScript 算法
JavaScript事件监听测试代码
JavaScript事件监听测试代码
5 0
|
1天前
|
存储 Java 编译器
使用ASM来书写Java代码
使用ASM来书写Java代码
9 0
|
1天前
|
XML 存储 自然语言处理
基于Java+HttpClient+TestNG的接口自动化测试框架(四)-------参数存取处理
基于Java+HttpClient+TestNG的接口自动化测试框架(四)-------参数存取处理