首先介绍一下什么是代码块!!!
看似高大上的代码块其实就是:{}
在Java中,代码块主要分为三种:
普通代码块
构造代码块
静态代码块
局部代码块
局部代码块一般在方法中出现,在局部变量中定义的变量为局部变量,只在局部代码块内有意义,代码块结束,局部变量销毁
一个代码块占一个空间,代码块运行结束,内存空间自动释放
即局部代码块可以限定变量生命周期,几乎再无其他明显作用
如果有多个局部代码块,一般是按顺序运行
如下:
class Baiba{
//一下方法有三部分空间
public void Aai(){
System.out.println("局部代码块");
{
System.out.println("局部局部代码块1");
}
{
System.out.println("局部局部代码块2");
}
}
}
public class Text_0 {
public static void main(String[] args) {
Baiba B = new Baiba();
B.Aai();
}
}
输出结果为:
局部代码块
局部局部代码块1
局部局部代码块2
构造代码块
构造代码块在类中方法外出现,每次调用构造方法时会在构造方法运行之前先运行,如下:
class Baiba{
public Baiba(){
System.out.println("构造方法");
}
{
System.out.println("构造代码块");
}
}
public class Text_0 {
public static void main(String[] args) {
Baiba B = new Baiba();
}
}
输出结果为:
构造代码块
构造方法
静态代码块
静态代码块在类中方法外出现,并加上static修饰,在调用类时执行,因为时static修饰,所以静态代码块属于类,且只执行一次,常用于给类进行初始化,在构造代码块前执行
class Baiba{
{
System.out.println("构造代码块");
}
static {
System.out.println("静态代码块1");
}
}
public class Text_0 {
public static void main(String[] args) {
Baiba B = new Baiba();
}
}
输出结果为:
静态代码块1
构造代码块
代码块运行顺序
默认按照顺序为:静态代码块,构造代码块,局部代码块
当为同一种代码块时候按照代码块顺序运行
如下:
class Baiba{
public Baiba(){
System.out.println("构造方法");
}
{
System.out.println("构造代码块1");
}
{
System.out.println("构造代码块2");
}
static {
System.out.println("静态代码块1");
}
static {
System.out.println("静态代码块2");
}
public void Aai(){
System.out.println("局部代码块");
{
System.out.println("局部局部代码块1");
}
{
System.out.println("局部局部代码块2");
}
}
}
public class Text_0 {
public static void main(String[] args) {
Baiba B = new Baiba();
B.Aai();
}
}
运行结果为:
静态代码块1
静态代码块2
构造代码块1
构造代码块2
构造方法
局部代码块
局部局部代码块1
局部局部代码块2