Java初始化块与静态初始化块详解
需积分: 1 145 浏览量
更新于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基础的重要组成部分。这些概念对于编写健壮、易于维护的代码至关重要。
185 浏览量
点击了解资源详情
4624 浏览量
![](https://profile-avatar.csdnimg.cn/608a02c5f12a4175b4bd3aad721aa852_weixin_45804384.jpg!1)
好教员好
- 粉丝: 1232
最新资源
- OCP指南:理解价值与分类,避开误区
- Windows 2000 + Oracle 9i 安装配置详指南
- ActionScript 3.0组件使用指南
- C语言指针完全解析:从基础到复杂类型
- Hibernate实战指南:Manning出版社
- 9iClient Form Builder基础开发:安装与环境设置
- Flex与J2EE深度集成:服务导向架构与RIA开发
- Oracle数据库安全:概要文件与用户管理
- Oracle事务管理详解:进程与会话的管控
- Oracle对象管理最佳实践
- Oracle分区管理详解
- Zend Framework入门教程:由Rob Allen撰写
- C语言基础:数据类型详解
- VNC协议详解:登录与桌面共享机制
- SQL入门与实践:基础语句与练习解析
- 《Div+CSS布局大全》网页设计教程