JavaSE|代码块

普通代码块

普通代码块:定义在方法中的代码块

public class Test{
public static void main(String[] args) {
{ //直接使用{}定义,普通方法块
   int x = 10 ;
   System.out.println("x = " +x);
}
   int x = 100 ;
   System.out.println("x = " +x);
 }
}

应用场景:如果方法中代码过长,为避免变量重名,使用普通代码块。

构造块

构造块:定义在类中的代码块(不加修饰)


class Person{
{ //定义在类中,不加任何修饰符,构造块
   System.out.println("1.Person类的构造块");
}
public Person(){
    System.out.println("2.Person类的构造方法");
 }
}
public class Test{
public static void main(String[] args) {
   new Person();
   new Person();
  }
}

应用场景:构造块优先于构造方法执行,每产生一个新的对象就调用一次构造块,构造块可以进行简单的逻辑操作(在调用构造方法前)

静态代码块

静态代码块:使用static定义的代码块
分为两种类型:在非主类中和在主类中

在非主类中的静态代码块


class Person{
{ //定义在类中,不加任何修饰符,构造块
System.out.println("1.Person类的构造块");
}
public Person(){
System.out.println("2.Person类的构造方法");
}
static { //定义在非主类中的静态块
System.out.println("3.Person类的静态块");
}
}
public class Test{
public static void main(String[] args) {
System.out.println("--start--");
new Person();
new Person();
System.out.println("--end--");
}
}

应用场景:

  1. 静态块优先于构造块执行。
  2. 无论产生多少实例化对象,静态块都只执行一次
    静态块的主要作用是为static属性进行初始化

在主类中的代码块

public class Test{
{
System.out.println("1.Test的构造块");
}
public Test(){
System.out.println("2.Test的构造方法");
}
static{
System.out.println("3.Test的静态块");
}
public static void main(String[] args) {
System.out.println("--start--");
new Test();
new Test();
System.out.println("--end--");
}
}

在主类的静态代码块,优于主方法执行

练习

class HelloA {
    //构造方法
    public HelloA(){
        System.out.println("Hello A!父类构造方法");
    }
    //非静态代码块
    {
        System.out.println("i'm A class.父类非静态代码块");
    }
    //静态代码块
    static{
        System.out.println("static A 父类静态代码块");
    }
}
public class HelloB extends HelloA {
    //构造方法
    public HelloB(){
        System.out.println("Hello B! 构造方法");
    }
    //非静态代码块
    {
        System.out.println("i'm B class.非静态代码块");
    }
    //静态代码块
    static{
        System.out.println("static B 静态代码块");
    }
    public static void main(String[] args) {
        System.out.println("---start---");
        new HelloB();
        new HelloB();
        System.out.println("---end---");
    }
}


在这里插入图片描述

发布了87 篇原创文章 · 获赞 73 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/HL_HLHL/article/details/88626449