1.普通代码块
- 普通代码块的主要特点是定义在一个方法之中的代码块。
范例:
public class JavaDemo {
public static void main (String args[]) {
{ //普通代码块
int x = 10 ; //局部变量
System.out.println (“x = ” + x) ; //x=10
}
int x = 100 ; //全局变量
System.out.println (“x =” + x) ; //x=100
}
}
2.构造代码块
- 构造块是定义在一个类之中的。
范例:观察构造块
class person {
public person() {
System.out.println(“【构造方法】Person类构造方法执行”) ;
}
{
System.out.println(“【构造块】Person构造块执行”) ;
}
}
public class JavaDemo {
public static void main (String args[]) {
new person() ;
new person() ;
new person() ;
}
}
输出结果:
【构造块】Person构造块执行
【构造方法】Person类构造方法执行
【构造块】Person构造块执行
【构造方法】Person类构造方法执行
【构造块】Person构造块执行
【构造方法】Person类构造方法执行
- 构造块会优先于构造方法执行,并且每一次实例化新对象的时候都会调用构造块中的代码。
3.静态代码块
- 静态代码块主要指的是使用static关键字定义的代码块,静态块的定义需要考虑到两种情况:主类中定义静态块、非主类中定义静态块。
范例:在非主类中进行静态块的定义
class person {
public person() {
System.out.println(“【构造方法】Person类构造方法执行”) ;
}
static {
System.out.println(“【静态块】静态块执行。”) ;
}
{
System.out.println(“【构造块】Person构造块执行”) ;
}
}
public class JavaDemo {
public static void main (String args[]) {
new person() ;
new person() ;
new person() ;
}
}
输出结果:
【静态块】静态块执行。
【构造块】Person构造块执行
【构造方法】Person类构造方法执行
【构造块】Person构造块执行
【构造方法】Person类构造方法执行
【构造块】Person构造块执行
【构造方法】Person类构造方法执行
- 此时可以发现静态代码块会优先于构造块执行,并且不管有多少个实例化对象出现静态代码块只会执行一次,静态代码块的主要目的是为类中的静态属性初始化。
范例:观察静态属性初始化
class Message {
public static String getCountry() {
//该消息的内容可能来自于网络或其它服务器
return “中华人民共和国”
}
}
class person {
private static String country ;
static {
//可能有很多语句要执行
country = Message.getCountry() ; //编写一部分的代码
System.out.println(country) ;
}
}
public class JavaDemo {
public static void main (String args[]) {
new person() ;
}
}
- 对于静态代码块我们还必须考虑另外一种情况,在主类中定义的形式。
范例:在主类中进行静态代码块的定义
public class JavaDemo {
static {
System.out.println(“********* 程序初始化 *********”) ;
}
public static void main (String args[]) {
System.out.println(“www.mldn.cn”) ;
}
}