代码块
(
或初始化块
)
的作用: 对
Java
类或对象进行初始化
代码块
(
或初始化块
)
的分类: 一个类中代码块若有修饰符, 则只能被
static
修饰, 称为静态
代码块
(static block)
, 没有使用
static
修饰的, 为非静态代码块。
static
代码块通常用于初始化
static
的属性
class
Person
{
public static
int
total
;
static
{
total
=
100
;
//
为
total
赋初值
}
……
//
其它属性或方法声明
}
静态代码块:用
static
修饰的代码块
可以有输出语句。
可以对类的属性、类的声明进行初始化操作。
不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。
若有多个静态的代码块,那么按照从上到下的顺序依次执行。
静态代码块的执行要先于非静态代码块。
静态代码块随着类的加载而加载,且只执行一次。
非静态代码块:没有
static
修饰的代码块
可以有输出语句。
可以对类的属性、 类的声明进行初始化操作。
除了调用非静态的结构外, 还可以调用静态的变量或方法。
若有多个非静态的代码块, 那么按照从上到下的顺序依次执行。
每次创建对象的时候, 都会执行一次。 且先于构造器执行。
举例
public class
CommandPara
{
public static
void
main
(
String
[]
args
) {
for
(
int
i
=
0
;
i
<
args
.
length
;
i
++
) {
System
.
out
.
println
(
"args["
+
i
+
"] = "
+
args
[
i
]);
}
}
}
//
运行程序
CommandPara.java
java CommandPara “Tom
" “Jerry"
“Shkstart
"
class
Person
{
public static
int
total
;
static
{
total
=
100
;
//
为
total
赋初值
}
……
//
其它属性或方法声明
}
总结:程序中成员变量赋值的执行顺序
![](https://i-blog.csdnimg.cn/blog_migrate/73fc4ef0d74a7f42821564beed30b660.png)