前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java代码块

Java代码块

作者头像
闲花手札
发布于 2021-08-24 06:43:49
发布于 2021-08-24 06:43:49
90300
代码可运行
举报
文章被收录于专栏:闲花手札闲花手札
运行总次数:0
代码可运行

代码块

Java 中,使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程)

构造代码块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
格式:
    {

    }
注意
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1、用于给对象初始化,多个构造方法中相同的代码存放到一起,每次调用构造方法都会执行,并且在构造方法前执行
2、只有创建对象时调用,类不能调用
3、构造代码块可以有多个,建议只写一个
class Person {
    {
        System.out.println("Person构造代码块执行");
    }

    public Person() {
        System.out.println("Person构造方法执行");
    }
}

public class TestPerson {
    public static void main(String[] args) {
        System.out.println("main方法");
        new Person();
        new Person();
    }
}

静态代码块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
格式:
    static {

    }
注意
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1、用于给类进行初始化,在加载的时候就执行,并且只执行一次
2、优先级高于主函数
3、静态代码块可以有多个,顺序执行,建议只写一个
class Person {
    static {
        System.out.println("Person静态代码块执行");
    }

    public Person() {
        System.out.println("Person构造方法执行");
    }
}

public class TestPerson {
    static {
        System.out.println("静态代码块1执行");
    }

    public static void main(String[] args) {
        System.out.println("main方法");
        new Person();
        new Person();
    }

    static {
        System.out.println("静态代码块2执行");
    }
}

结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
静态代码块1执行
静态代码块2执行
main方法
Person静态代码块执行
Person构造方法执行
Person构造方法执行

代码块相关执行顺序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Father {
    public Father() {
        System.out.println("父类构造方法执行~~~");
    }

    {
        System.out.println("父类构造代码块执行~~~");
    }

    static {
        System.out.println("父类静态代码块执行~~~");
    }

    public static void function() {
        System.out.println("父类静态成员方法执行~~~");
    }
}

public class Son extends Father{
    public Son() {
        System.out.println("子类构造方法执行~~~");
    }

    {
        System.out.println("子类构造代码块执行~~~");
    }

    static {
        System.out.println("子类静态代码块执行~~~");
    }

    public static void function() {
        System.out.println("子类静态成员方法执行~~~");
    }

    public static void main(String[] args) {        
        System.out.println("main方法执行~~~");
        new Son();
    }
}

结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
父类静态代码块执行~~~
子类静态代码块执行~~~
main方法执行~~~
父类构造代码块执行~~~
父类构造方法执行~~~
子类构造代码块执行~~~
子类构造方法执行~~~

面试题

执行顺序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Test {
    static Test test1 = new Test();
    static Test test2 = new Test();

    static {
        System.out.println("静态代码块");
    }

    {
        System.out.println("构造代码块");
    }

    public Test() {
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
        System.out.println("main方法");
        new Test();
    }
}

结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
构造代码块
构造方法
构造代码块
构造方法
静态代码块
main方法
构造代码块
构造方法

总结

1、构造代码块用于给对象初始化,每次创建对象都会调用构造代码块,并且执行顺序在构造方法之前 2、静态代码块用于给类初始化,当类被加载的时候就会调用静态代码块(只执行一次),执行顺序在main方法之前

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java中静态代码块、构造代码块、构造函数、普通代码块
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
Fisherman渔夫
2019/07/31
1.7K0
Java中静态代码块、构造代码块、构造函数、普通代码块
Java基础-08(01)总结帮助文档,代码块,继承
1:如何制作帮助文档(了解) (1)写一个类 (2)加入文档注释 (3)通过javadoc工具生成即可 javadoc -d 目录 -author -version ArrayTool.jav
Java帮帮
2018/03/15
8340
Java基础-08(01)总结帮助文档,代码块,继承
Java中类的静态代码块、构造代码块、构造方法、普通代码块
Java中静态代码块、构造代码块、构造方法、普通代码块的执行顺序是一个比较常见的笔试题,合理利用其执行顺序也能方便实现项目中的某些功能需求 。
小诸葛
2020/04/14
3.7K0
Java中类的静态代码块、构造代码块、构造方法、普通代码块
Java中静态代码块、构造代码块、构造函数、普通代码块
  在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。
IT可乐
2022/05/09
2K0
Java中静态代码块、构造代码块、构造函数、普通代码块
Java基础-08(02)总结帮助文档,代码块,继承
A:Override和Overload的区别?Overload是否可以改变返回值类型? B:this和super的区别和各自的作用? 1:方法重写和方法重载的区别?方法重载能改变返回值类型吗?
Java帮帮
2018/03/15
9610
Java基础系列5:Java代码的执行顺序
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架。
说故事的五公子
2019/11/14
7860
Java代码块执行顺序初探
Java继承中对构造函数是不继承的,只是显式或者隐式调用,并且必须是在构造函数第一行。这里是隐式调用了super()。
WindCoder
2018/09/19
2.7K0
static静态代码块加载和执行
静态代码块,非静态代码块,无参构造,有参构造,这些代码片段分别在什么时候加载执行?
IT云清
2019/01/22
5920
Java中静态代码块和构造代码块
    构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。
緣來
2020/01/02
1.2K0
java中带继承类的加载顺序详解及实战
  在面试中,在java基础方面,类的加载顺序经常被问及,很多时候我们是搞不清楚到底类的加载顺序是怎么样的,那么今天我们就来看看带有继承的类的加载顺序到底是怎么一回事?在此记下也方便以后复习巩固!
阿豪聊干货
2018/08/09
4780
java中带继承类的加载顺序详解及实战
详解java中的四种代码块
使用synchronized(){}包裹起来的代码块,在多线程环境下,对共享数据的读写操作是需要互斥进行的,否则会导致数据的不一致性。同步代码块需要写在方法中。
三哥
2019/05/10
3.3K0
详解java中的四种代码块
Java 静态块、构造块、构造函数执行顺序
1.静态块:用static声明,JVM加载类时执行,仅执行一次 2.构造块:类中直接用{}定义,每次创建对象时执行 3.执行顺序优先级:静态块>main()>构造块>构造方法 4.静态块和静态属性优先执行,谁在前先执行谁。
pydata
2018/08/02
1.8K0
普通代码块 静态代码块 构造代码块......傻傻分不清
在上面分类描述中,我们已经给出了答案;接下来我们跑一跑测试代码,根据代码执行结果来验证这些答案
麦洛
2021/04/29
1K0
普通代码块 静态代码块 构造代码块......傻傻分不清
java几大特性_java三大特性是什么?「建议收藏」
java三大特性:1、封装,是指隐藏对象的属性和实现细节,仅对外提供公共访问方式;2、继承,从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力;3、多态,一个方法可以有多种实现版本,即“一种定义, 多种实现”。
全栈程序员站长
2022/07/18
2.9K0
java几大特性_java三大特性是什么?「建议收藏」
静态代码块、构造代码块以及构造函数的加载顺序
首先,静态代码块,构造代码块,和构造函数都存在于一个类中,只不过,他们执行的先后顺序和执行的次数不同。
week
2018/08/24
7570
代码块总结
这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法。一般来说代码块是不能单独运行的,它必须要有运行主体。在Java中代码块主要分为四种:
栋先生
2018/09/29
8570
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑
各位小伙伴大家好,我是A哥。如果问:Java的三大特性是什么?你顺口就能答出:封装、继承、多态。如果继续问:你真的了解Java中的继承吗?
YourBatman
2022/05/06
1K0
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑
java从入门到精通四(面向对象上,类与对象的实现,代码块的执行顺序)
面向对象的方法主要是把事物对象化,包括属性和行为。而面向对象编程则比较贴近生活的实际,也就说,在程序中的编程,力图对描述的事物在现实中的形态保持一致。为了做到这一点,我们java中也就有类和对象的概念。类是对一类事物的抽象,类下就有若干对象,对象用于描述类中事物的个体。说来光看定义还是比较抽象,不容易理解。我们在下面的编程实践中可以大致理解这种思维模式。
兰舟千帆
2022/07/16
7990
java从入门到精通四(面向对象上,类与对象的实现,代码块的执行顺序)
全面理解Java中继承关系
继承是面向对象思想的三大特性之一,使类与类之间产生特殊 - 一般的关系,即is-a关系。继承是从已有类中派生出新的类,新的类能吸收已有类的属性和方法,并且能拓展新的属性和行为。在Java中使用extends关键字表示继承,语法表示为: class 子类 extends 父类{}子类被称为派生类,父类又被称为超类。子类继承父类,表名子类是一种特殊的父类,子类拥有父类的属性和方法,并且子类可以拓展具有父类所没有的一些属性和方法。子类即是不扩展父类,也能维持拥有父类的操作。
用户7886150
2021/01/30
1.6K0
【说站】java代码块的执行顺序是什么
类成员变量的初始化顺序:显式初始化与结构代码块的初始化等级一致,因此代码顺序决定初始化顺序,但注意结构代码块不能添加数据类型。
很酷的站长
2022/11/23
6040
【说站】java代码块的执行顺序是什么
推荐阅读
相关推荐
Java中静态代码块、构造代码块、构造函数、普通代码块
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验