Java学习Day19:基础篇9

final

权限修饰符

空着不写是default!

代码块

1.静态代码块

1.静态代码块优于空参构造方法

2.静态调用只被加载一次;

静态代码块在Java中是一个重要的特性,它主要用于类的初始化操作,并且随着类的加载而执行,且只执行一次。静态代码块的实践应用广泛,以下是几个主要的应用场景:

1. 初始化静态变量

静态代码块经常用于初始化静态变量,这些变量在类的所有实例之间共享。通过静态代码块,可以在类加载时设置这些变量的初始值确保在使用这些变量之前它们已经被正确初始化

2. 加载外部资源

在应用程序中,有时需要在类加载时加载外部资源,如配置文件、数据库驱动等。静态代码块提供了一个很好的时机来完成这些任务,因为它在类被JVM加载时执行,且只执行一次。

3. 初始化静态数据结构

对于需要在类级别上共享的数据结构(如集合、映射等),静态代码块可以用于在类加载时初始化这些数据结构。这有助于减少在对象创建时重复初始化相同数据结构的开销。

4. 执行一次性的任务

如果有一些任务只需要在类加载时执行一次,比如初始化日志系统、注册服务提供者等,那么静态代码块是一个理想的选择。这些任务通常与类的实例无关,但需要在类被使用时已经准备好。

5. 控制静态代码块的执行顺序

在存在继承关系的类中,静态代码块的执行顺序是按照父类到子类的顺序进行的。这一特性可以用于控制初始化操作的顺序,确保在子类使用父类资源之前,父类资源已经被正确初始化。

示例代码

|---|-----------------------------------------------------|
| | public class StaticInitialization { |
| | // 静态变量 |
| | private static String country; |
| | |
| | // 静态代码块 |
| | static { |
| | country = "中国"; |
| | System.out.println("静态代码块执行,初始化国家为:" + country); |
| | // 可以在这里加载外部资源或执行其他初始化任务 |
| | } |
| | |
| | public static void main(String[] args) { |
| | // 静态代码块在类加载时自动执行,无需显式调用 |
| | System.out.println("主方法执行,国家为:" + country); |
| | } |
| | } |

在上面的示例中,静态代码块在类StaticInitialization被加载时执行,并且只执行一次。它用于初始化静态变量country,并在控制台打印一条消息。然后,在main方法中,可以直接访问这个已经初始化的静态变量。

注意事项

  • 静态代码块只能访问类的静态成员变量和静态方法,不能访问类的实例成员变量和实例方法。
  • 静态代码块的执行顺序取决于它们在类中的定义顺序,与它们在代码中的位置无关。
  • 如果存在继承关系,父类的静态代码块会在子类的静态代码块之前执行。但是,需要注意的是,这并不会影响静态变量的访问顺序,因为静态变量是按照它们在类中的定义顺序进行初始化的。

2.构造代码块

实例化几次就调用几次

3.静态代码块、构造代码块、构造函数执行顺序

内部类

1.内部类的分类

1.成员内部类

复制代码
public class text {
    public static void main(String[] args) {
        A.c c =new A().new c();
        c.setA(3);
        System.out.println(c.getA());
    }
}

2.局部内部类

3.匿名内部类

相关推荐
benbenAItalk5 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
sunshine22 girl5 小时前
Java学习二 基本语法2, 算术运算符
java·学习
2601_962218615 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
2601_966949655 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin5 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
2601_962885725 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
吞下星星的少年·-·5 小时前
The 2026 ICPC Asia East Continent Online Contest (II)(构造)
数据结构·算法
滕州市燕猫虎计算机科技工作室个体工商户6 小时前
Java锁
java·开发语言
多加点辣也没关系6 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2336 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理