Java初始化块与静态初始化块详解
需积分: 1 149 浏览量
更新于2024-08-03
收藏 12KB TXT 举报
"Java基础知识,包括初始化块、静态初始化块和final关键字的使用与规则"
在Java编程语言中,初始化块和构造方法都是用于对象创建时进行初始化的。初始化块,顾名思义,是在创建对象时执行的一段代码,其目的是在对象实例化时对对象的状态进行设置。初始化块的语法结构如下:
```java
{
// 初始化代码
}
```
当创建Java对象时,系统会先调用类中定义的初始化块,然后再执行构造方法。这种设计使得开发者可以在不显式调用构造方法的情况下,依然能够对对象进行初始化操作。
静态初始化块,即类初始化块,是与类相关联的,而非对象。它们在类加载到内存时执行,即在任何对象创建之前。静态初始化块主要用于初始化类级别的静态变量。需要注意的是,静态初始化块不能访问实例变量和实例方法,因为它们在类加载时执行,此时还没有任何对象实例存在。
静态初始化块和初始化块的执行顺序如下:
1. 首先,按照父类到子类的顺序执行静态初始化块。
2. 然后,创建对象,依次执行父类的初始化块和构造方法,接着执行子类的初始化块和构造方法。
例如:
```java
public class Base {
static Sub sub = new Sub(); // 先执行
static { // 父类静态初始化块
System.out.println("Base静态初始化块!");
}
{
System.out.println("Base初始化块!");
}
public Base() {
System.out.println("Base构造方法!");
}
}
public class Sub extends Base {
static {
System.out.println("Sub静态初始化块!");
}
{
System.out.println("Sub初始化块!");
}
public Sub() {
System.out.println("Sub构造方法!");
}
}
```
在这个例子中,你会看到控制台输出展示了静态初始化块和初始化块的执行顺序。
接下来,我们讨论`final`关键字。`final`在Java中扮演着多重角色:
1. `final`修饰的类不能被其他类继承,确保类的封闭性,例如`final`类`String`。
2. `final`修饰的变量一旦初始化后,就不能再次赋值。对于实例变量,可以在声明时初始化,也可以在初始化块或构造方法中初始化。对于静态变量(常量),通常在定义时与`static`一起使用,并在静态块中初始化,如`public static final int PI = 3.14;`。
3. `final`修饰的方法不能被子类重写,但可以被重载。这意味着子类不能改变`final`方法的行为,但可以提供同名但参数列表不同的方法。
例如,一个简单的`final`关键字应用:
```java
public class FinalDemo {
final int constant = 10; // 常量
final int value; // 必须在初始化块或构造器中初始化
{
value = 20;
}
public final void printMessage(String msg) { // 不可重写的方法
System.out.println(msg);
}
}
```
理解初始化块、静态初始化块以及`final`关键字的用法是掌握Java基础的重要组成部分。这些概念对于编写健壮、易于维护的代码至关重要。
189 浏览量
点击了解资源详情
4683 浏览量

好教员好
- 粉丝: 1243
最新资源
- Python编程基础视频课件精讲
- FairyGUI-unreal:掌握Unreal Engine的高效UI设计
- C++实现Excel基本操作教程
- 实时聊天小部件的Python实现与Pusher Channels集成
- Android版本比较工具库:轻量级字符串比较方法
- OpenGL基础教程:编译顶点着色器与片段着色器
- 单片机实现的24小时制电子定时器设计
- ThinkPHP 3.1.2框架中文开发手册全解
- 离散数学第七版习题解答:奇偶数题答案解析
- 制造行业素材资源压缩包分享
- C#编程实现打印与测试程序详解
- Konveyor:快速生成Android随机数据类库
- 掌握Symfony集合:使用Vanilla JS实现高效表单管理
- Spring Boot MVC模板项目:快速启动Spring MVC与嵌入式Jetty
- 最新metro风格VB在线升级程序源码分享
- Android开发入门实践:新手指南与实践技巧