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

打开这个你会感谢我的网站培训学校网站

打开这个你会感谢我的网站,培训学校网站,个人站长做什么网站好,婚庆策划公司排名一、代码块分类概览 Java代码块分为三类,用于控制代码执行时机和变量生命周期: 代码块类型声明位置执行时机核心作用​​局部代码块​​方法内部方法调用时控制变量作用域(已淘汰)​​构造代码块​​类内部(非static…

一、代码块分类概览

Java代码块分为三类,用于控制代码执行时机和变量生命周期:

代码块类型声明位置执行时机核心作用
​局部代码块​方法内部方法调用时控制变量作用域(已淘汰)
​构造代码块​类内部(非static)对象实例化时抽取构造方法重复代码
​静态代码块​类内部(static修饰)类加载时(仅一次)初始化静态资源(重点)

二、局部代码块(淘汰技术)

1. 基本语法

public void demoMethod() {// 普通代码{ // 局部代码块开始int temp = 10;System.out.println(temp);} // 局部代码块结束// System.out.println(temp); // 编译错误:temp不可访问
}

2. 历史作用

  • ​变量生命周期控制​​:手动限制变量作用域(JVM优化后已无必要)
  • ​内存管理​​:早期帮助回收临时对象(现代JVM自动优化)

3. 淘汰原因

  • 现代IDE智能提示变量作用域
  • JVM自动优化变量存储
  • 代码可读性降低(推荐使用小方法代替)

三、构造代码块(谨慎使用)

1. 基本语法

public class User {// 构造代码块(每次new对象执行){System.out.println("对象初始化开始");}public User() {} // 构造方法1public User(String name) {} // 构造方法2
}

 2. 核心作用

public class DatabaseConnection {private String url;// 构造代码块抽取重复逻辑{loadConfig(); // 公共初始化方法}public DatabaseConnection() {// 自动执行构造代码块}public DatabaseConnection(String customUrl) {this.url = customUrl;// 仍然自动执行构造代码块}private void loadConfig() {// 加载配置逻辑}
}

3. 使用限制

  • ​执行顺序​​:先于构造方法执行
  • ​灵活性缺陷​​:所有构造方法强制执行代码块
  • ​替代方案​​:推荐使用init()方法显式调用

四、静态代码块(重点掌握)

1. 基本语法

public class ConfigLoader {// 静态代码块(类加载时执行一次)static {System.out.println("加载全局配置");loadDatabaseConfig(); // 静态方法调用}private static void loadDatabaseConfig() {// 初始化数据库连接池}
}

2. 典型应用场景

​场景1:驱动注册(JDBC标准做法)​

public class JdbcUtil {static {try {Class.forName("com.mysql.cj.jdbc.Driver"); // 驱动注册} catch (ClassNotFoundException e) {throw new ExceptionInInitializerError(e);}}
}

场景2:复杂静态数据初始化​

public class MathConstants {public static final Map<String, Double> CONSTANTS;static {Map<String, Double> tempMap = new HashMap<>();tempMap.put("PI", 3.141592653589793);tempMap.put("E", 2.718281828459045);CONSTANTS = Collections.unmodifiableMap(tempMap); // 创建不可变集合}
}

3. 高级特性

  • ​执行顺序控制​​:多个静态块按声明顺序执行
public class ExecutionOrder {static { System.out.println("静态块1"); }static { System.out.println("静态块2"); }
}
// 输出顺序:静态块1 → 静态块2
  • ​异常处理​​:静态块异常导致类加载失败
public class ErrorDemo {static {int result = 1 / 0; // 抛出ArithmeticException}
}
// 类加载时报ExceptionInInitializerError

五、对比总结与最佳实践

1. 核心区别总结

特性局部代码块构造代码块静态代码块
执行次数每次方法调用每次new对象类加载一次
存储位置栈内存堆内存方法区
是否可抛异常可处理可处理需捕获或终止加载
访问权限仅限方法内部可访问实例变量仅访问静态成员

2. 工程实践建议

​局部代码块​

  • 避免在新项目中使用
  • 重构为独立方法提升可读性

​构造代码块​

  • 优先使用构造方法链(this()调用)
  • 复杂初始化建议使用建造者模式

​静态代码块​

  • 资源初始化需添加异常处理
static {try {// 初始化代码} catch (Exception e) {throw new ExceptionInInitializerError(e);}
}

  • 多线程环境注意线程安全
public class Singleton {private static volatile Singleton instance;static {instance = new Singleton(); // 饿汉式单例}
}

结语

掌握三类代码块的特性和适用场景是编写高质量Java代码的基础:

  • 理解静态代码块的 ​​一次性初始化​​ 机制
  • 避免构造代码块的 ​​滥用风险​
  • 认识局部代码块的 ​​历史局限性​

在实际开发中,建议结合IDE的代码分析工具(如IntelliJ IDEA的Analyze → Inspect Code)检查代码块使用合理性,遵循“静态资源用静态块,对象初始化用构造方法”的原则,构建高可维护性的Java应用。

http://www.dtcms.com/wzjs/509733.html

相关文章:

  • 宁波网站公司北京网站优化托管
  • 不相关的网站做单项链接可以吗线上引流的八种推广方式
  • php网站开发实用技术上海网站制作开发
  • 深圳最简单的网站建设软文广告经典案例
  • 用什么技术做网站百度搜索风云榜下载
  • 四川建网站百度做广告多少钱一天
  • 个人公众号做电影网站吗百度推广优化中心
  • 网站建设的基本步骤公司企业网站制作需要多少钱
  • 一般制作一个网站要多久热搜榜百度
  • 什么网站允许搭建线上营销手段
  • WordPress评论回复提醒勾选seo咨询服务
  • 网站建设公司需要申请icp吗大数据分析师
  • 美橙互联 网站备案拍照优化推广网站排名
  • 去菲律宾做网站巨量引擎广告投放平台
  • 北京旅游网页设计seo排名优化方式
  • 做网站公司广州股票发行ipo和seo是什么意思
  • 个人网站建设概述新手怎么引流推广推广引流
  • 专业的网站建设企业2023第二波疫情已经到来
  • 做cpa比较做网站吗百度提交入口地址在哪
  • 做网站运营需要具备什么能力为什么外包会是简历污点
  • 做网站系统广州最近爆发什么病毒
  • 拒绝做网站的理由上海网络推广公司
  • 企业怎样做网站搜索引擎营销的主要模式
  • 如何建立微信群seo外链工具
  • 网站底部放置备案号2022年app拉新推广项目
  • 有没有国外的做美食的视频网站关于进一步优化当前疫情防控措施
  • 安徽法制建设网站店面怎么做位置定位
  • 创建购物网站seo学院
  • 怎么做 社区网站首页产品推广网站哪个好
  • 淘宝券商城网站制作网站优化与seo