代码块
代码块本身并不是很难理解的概念,实际上之前也一直在使用。所谓的代码块就是指使用“{}”括起来的一段代码,根据位置及声明关键字的不同,代码块可以分为普通代码块、静态代码块、构造快、同步代码块四种,其中,同步代码块将在后面的多线程中进行讲解。下面进行前面三种代码块的讲解。
一. 普通代码块
普通代码块就是指直接在方法或是语句中定义的代码块
public class CodeDemo01
{
public static void main(String[] args){
{
int x=30;
System.out.println("普通代码块-->x="+x);
}
int x=100;
System.out.println("代码块之外-->x="+x);
}
}
运行结果为:
普通代码块-->x=30
代码块之外-->x=100
二. 构造块
构造代码块是直接写在类中的代码块。
class Demo
{
{
System.out.println("1.构造块。");
}
public Demo(){
System.out.println("2.构造方法");
}
}
public class CodeDemo02
{
public static void main(String[] args){
new Demo;
new Demo;
new Demo;
}
}
运行结果为:
1.构造块。
2.构造方法
1.构造块。
2.构造方法
1.构造块。
2.构造方法
本程序在主方法中产生了3个实例化对象,从输出的结果可以发现,构造块优先于构造方法执行,而且每次实例化对象时都会执行构造快中的代码,会执行多次。
三. 静态代码块
静态代码块是使用static关键字声明的代码块。
class Demo
{
{
System.out.println("1.构造块");
}
static {
System.out.println("0.静态代码块");
}
public Demo(){
System.out.println("2.构造方法");
}
}
public class CodeDemo03
{
static {
System.out.println("在主方法所在类中定义的代码块。");
}
public static void main(String[] args){
new Demo();
new Demo();
new Demo();
}
}
运行结果:
在主方法所在类中定义的代码块。
0.静态代码块
1.构造块
2.构造方法
1.构造块
2.构造方法
1.构造块
2.构造方法
从程序运行结果中可以发现,静态代码块优先于主方法执行,而在类中定义的静态代码块会优于构造块执行,而且不管有多少个对象产生,静态代码块只执行一次。