当前位置: 首页 > news >正文

java 代码块

Java中的代码块主要有三种类型:普通代码块、静态代码块、构造代码块。它们的用途和执行时机各不相同。

  1. 普通代码块:在方法内部定义,使用一对大括号{}包围的代码片段。它的作用域限定在大括号内,每当程序执行到该代码块时就会执行其中的代码。

  2. 静态代码块:使用static关键字定义,属于类级别的代码块。静态代码块在类被加载到JVM时执行,且只执行一次。常用于初始化静态变量。

  3. 构造代码块:没有任何前缀修饰,直接使用一对大括号{}定义在类中。每次创建类的实例时,构造代码块都会执行,并且在构造方法执行前执行。常用于所有构造方法共享的代码。

下面是这三种代码块的示例:

在这个例子中,当BlockExample类被加载时,静态代码块首先执行。然后,每次使用new关键字创建BlockExample类的实例时,构造代码块会在构造方法之前执行。最后,当调用method方法时,其中的普通代码块会执行。

public class BlockExample {// 静态代码块static {System.out.println("静态代码块执行");// 初始化静态变量或执行仅需执行一次的代码}// 构造代码块{System.out.println("构造代码块执行");// 执行所有构造方法共享的初始化代码}// 构造方法public BlockExample() {System.out.println("构造方法执行");}public void method() {// 普通代码块{int localVariable = 10;System.out.println("普通代码块执行,局部变量值为: " + localVariable);}}public static void main(String[] args) {BlockExample example = new BlockExample();example.method();}
}
class test2 extends test1 {static {System.out.println("test2 static");}public static void main(String[] args) {test2 t = new test2();t.mth();test2 t2 = new test2();t2.mth();}{System.out.println("test2 block");}@Overridepublic void mth() {{System.out.println("test2 method block");}System.out.println("test2");}
}

相关文章:

  • 【C++】main函数及返回值深度解析
  • antd中Select大数据分页触底刷新处理优化
  • 虚拟纪念展馆建设的重大意义:重新定义纪念活动的未来
  • C++——探索智能指针的设计原理
  • 深入Ruby缓存:掌握Memcached的使用艺术
  • 【ARM系列】GIC600AE功能安全
  • modify filename
  • 【有为己之心方能克己】
  • 推广旅游卡项目,一个月创收十几万,为何说旅游卡项目堪称盈利利器?
  • Oracle JDK 与 OpenJDK:如何选择及其区别
  • Echarts-饼图
  • BASH and SH in SHELL scripts
  • 【办公软件使用分享—Excel篇】实用技巧 一学就会
  • 【面试题】网络IP协议(第六篇)
  • 数据库自动备份到gitee上,实现数据自动化备份
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • [译]CSS 居中(Center)方法大合集
  • 「面试题」如何实现一个圣杯布局?
  • Android组件 - 收藏集 - 掘金
  • avalon2.2的VM生成过程
  • ComponentOne 2017 V2版本正式发布
  • Flex布局到底解决了什么问题
  • Git的一些常用操作
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java 网络编程(2):UDP 的使用
  • JavaScript 一些 DOM 的知识点
  • Java读取Properties文件的六种方法
  • Kibana配置logstash,报表一体化
  • mysql innodb 索引使用指南
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vue-loader 源码解析系列之 selector
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 工程优化暨babel升级小记
  • 缓存与缓冲
  • 机器学习中为什么要做归一化normalization
  • 简单基于spring的redis配置(单机和集群模式)
  • 思考 CSS 架构
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​secrets --- 生成管理密码的安全随机数​
  • #Linux(帮助手册)
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (AngularJS)Angular 控制器之间通信初探
  • (k8s中)docker netty OOM问题记录
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (五)MySQL的备份及恢复
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法