代码块
代码块是
{}
定义的一段语句,根据定义的位置和关键字的不同,代码块分为四种:普通代码块,构造块,静态块和同步代码块。
普通代码块
1.写在方法中的代码块,称为普通代码块。
public class Demo {
public static void main(String[] args) {
{ // 普通代码块
int num = 10; // 局部变量
System.out.println("num = " + num); // 10
}
int num = 100; // 全局变量
System.out.println("num = " + num); // 100
}
}
普通代码块的功能是防止方法中代码过多时出现变量重名问题,对方法的代码进行局部分割。**编写方法时,代码不应太长,**因此也没必要使用普通代码块。
构造块
1.写在类中的代码块,称为构造块。
class Book {
public Book(){ // 构造方法
System.out.println("A. Book类的构造方法");
}
{ // 构造块
System.out.println("B. Book类的构造块");
}
}
public class Demo {
public static void main(String[] args) {
new Book();
// B. Book类的构造块
// A. Book类的构造方法
}
}
输出结果显示:构造块的调用优先于构造方法。
静态块
static定义的代码块,称为静态块。静态块的使用,分为两种情况:
1.在非主类中使用
class Book {
public Book(){ // 构造方法
System.out.println("A. Book类的构造方法");
}
{ // 构造块
System.out.println("B. Book类的构造块");
}
static {
System.out.println("C. Book类的静态块");
}
}
public class Demo {
public static void main(String[] args) {
new Book(); // C B A
new Book(); // B A
}
}
结果显示:静态块优先于构造块。且不论实例化多少个对象,静态块只执行一次。static主要功能是为类中的static属性初始化。
class Book {
public static String msg;
static {
msg = "Hello".substring(0,2);
System.out.println("C. Book类的静态块");
}
}
public class Demo {
public static void main(String[] args) {
System.out.println(Book.msg);
}
}
2.在主类中定义
public class Demo {
static {
System.out.println("**************");
}
public static void main(String[] args) {
System.out.println("Hello World !");
// **************
// Hello World !
}
}
结果显示:静态块优先于main()
方法执行。在编写测试时,可以使用静态块。