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. 创建一个对象时,无论是否带参数,都会先调用它的父类(如果存在父类)的默认构造方法。
相关文章
|
2天前
|
Java
java处理pdf代码
java处理pdf代码
10 0
|
13小时前
|
安全 Java
Java 面向对象之旅:在封装的港湾中,找到代码的安宁。
【6月更文挑战第15天】封装是Java面向对象的核心,它保护了类的内部数据,如`Book`和`Student`类中的属性。通过设定私有成员和公共方法,代码更有序,防止直接访问导致的混乱。封装提供了一种控制数据交互的方式,确保安全,如`setGpa()`方法验证输入。这使得代码结构清晰,如同港湾中的船只,井然有序,赋予编程过程美感和安全感。在面向对象的旅程中,封装是我们的庇护所,助力我们构建更美好的程序世界。
|
23小时前
|
算法 Java
Java关键字与保留字:如何正确使用,让你的代码“飞”起来!
【6月更文挑战第15天】Java编程中,关键字如"class"、"int"用于特定语法,保留字可能未来成为关键字。理解其含义和用法至关重要,避免用作标识符以防止未来冲突。正确使用如"for"控制循环,优化代码能提升效率,使程序运行更流畅。避免保留字,如"goto"、"const",查阅文档确保合规性。通过代码优化,让程序效率更高,代码飞行在技术的云端。
|
1天前
|
SQL 存储 关系型数据库
MySQL存储过程——Baidu Comate智能代码助手添加20条DML语句——测试索引效果
MySQL存储过程——Baidu Comate智能代码助手添加20条DML语句——测试索引效果
3 0
|
1天前
|
Java 编译器 程序员
【实战攻略】Java高手教你如何灵活运用if-else和switch,提升代码效率!
【6月更文挑战第14天】本文探讨了Java中if-else和switch语句的巧妙运用,通过示例展示了如何提升代码效率和可读性。通过使用Map重构if-else结构,使代码更简洁易维护;利用switch处理枚举类型,实现清晰的代码结构。在性能方面,switch在选项少时占优,而现代JIT编译器优化后的if-else适用于大规模字符串比较。理解并灵活运用这两种控制结构,能助你在Java编程中写出高效、易读的代码。
|
1天前
|
算法 Java 程序员
【程序员必看!】掌握这招if-else,你的Java代码将瞬间高大上!
【6月更文挑战第14天】本文介绍了if-else语句在程序设计中的重要性,通过示例展示其基本语法和复杂用法,如嵌套和else-if链。强调了避免过度嵌套、逻辑运算符的使用、保持一致性及添加注释等提升代码质量的技巧。学习并实践这些技巧,将使你的Java代码更优雅、高效,助你成为编程艺术家。
|
1天前
|
Web App开发 XML 安全
《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)
【6月更文挑战第14天】本文介绍了如何使用TestNg进行自动化测试,特别是通过变量参数启动不同浏览器的步骤。
14 5
|
2天前
|
Java
java图片处理代码
java图片处理代码
10 1
|
3天前
|
监控 Java 测试技术
《手把手教你》系列基础篇(七十二)-java+ selenium自动化测试-框架设计基础-TestNG简单介绍(详解教程)
【6月更文挑战第13天】本文介绍了TestNG单元测试框架,它是一个灵感来源于JUnit和NUnit的测试框架,支持多种级别的测试,如单元测试、集成测试等。TestNG的特点包括丰富的注解、数据驱动测试、变量支持、自动生成HTML测试报告等。与JUnit和NUnit相比,TestNG在某些功能上更为强大。文章还详细讲解了如何在Eclipse中安装TestNG插件,提供了在线安装、更新站点安装和离线安装三种方法,并展示了安装成功的验证步骤。最后,通过一个项目实战案例展示了如何使用TestNG编写和运行测试代码。
13 2
|
3天前
|
Java
Java基础8-一文读懂Java 代码块和执行顺序(二)
Java基础8-一文读懂Java 代码块和执行顺序(二)
6 0