代码块是在程序中使用“{}”定义起来的一段程序,而根据代码块声明位置以及声明关键字的不同,代码块一共分为四种:普通代码块、构造代码块、静态代码块和同步代码块。
5.7.1普通代码块
普通代码块是定义在方法中的代码块,利用这类代码块可以解决代码块在一个方法中过长导致出现重复变量定义的问题。
范例:观察一个程序
public class NintySeven {
public static void main(String[] args) {
if(true) { //条件一定满足
int x=10; //定义局部变量
System.out.println("x="+x+"(if语句内局部变量内容)"); //输出局部变量内容
}
int x=100;//定义全局变量
System.out.println("x="+x+"(main方法中的全局变量内容)"); //输出全局变量内容
}
}
x=10(if语句内局部变量内容)
x=100(main方法中的全局变量内容)
本程序在if语句中定义了一个局部变量x,由于{}作用,所以该变量不会与外部的变量x产生影响。
提问:什么叫全局变量?什么叫局部变量?
回答:全局变量和局部变量是一种相对性的概念
例如上一个区分是用{}区分,再看以下程序
public class NintyEight01 {
public static int x=100; //全局变量
public static void main(String[] args) {
int x=100; //局部变量
System.out.println(x);
//此程序中,相对于主方法中定义的变量x而言,在类中定义的变量x就成为全局变量,所以这两个概念是相对而言的
}
}
范例:定义普通代码块将
public class NintyEight02 {
public static void main(String[] args) {
{
int x=10;
System.out.println(x+"(普通代码块中的变量)");
}
int x=100;
System.out.println(x+"全局变量");
}
}
10(普通代码块中的变量)
100全局变量
使用{}定义了一个普通代码块,不会相互影响,使用普通代码块可以将一个方法中的代码进行部分分割。
5.7.2构造代码块
将代码定义在一个类中,这样就成为构造代码块。构造代码块的主要特点是在使用关键字new实例化新对象时进行调用。
public class NintyNine {
public NintyNine() { //构造方法
System.out.println("【构造方法执行】");
}
{ //构造代码块
System.out.println("【构造代码块执行】");
}
}
public class NintyNine_a {
public static void main(String[] args) {
new NintyNine();
new NintyNine();
}
}
【构造代码块执行】
【构造方法执行】
【构造代码块执行】
【构造方法执行】
通过程序的执行结果可以发现,每一次实例化新的对象时都会调用构造块,并且构造代码块的执行优先于构造方法的执行。