代码块

在程序编写中直接使用”{}“ 定义的语句,那么根据此部分定义的代码,叫做代码块;共分为4中:普通代码块,构造块,静态块‘同步代码块.

普通代码块

写在普通方法里面的代码块,叫做普通代码块。实际上普通代码块作用时为了防止代码编写过多时产生的变量重名

  1. public class TestBlock{
  2. public static void main(String[] arg){
  3. {//普通代码块
  4. int num = 10;//局部变量
  5. System.out.println(num);
  6. }
  7. int num = 100;
  8. System.out.println(num);
  9. }
  10. }

构造块

构造块先于构造方法执行

  1. class Person{
  2. public Person(){
  3. System.out.println("构造方法");
  4. }
  5. {//构造块
  6. System.out.println("构造块");
  7. }
  8. }
  9. public class TestBlock{
  10. public static void main(String[] arg){
  11. new Person();
  12. }
  13. }
  14. //结果:
  15. //构造块
  16. //构造方法

静态块

  • 对象中的静态块

    它先于构造方法执行,同时只执行一次,这个一般可能只是在类的一些属性做初始化需要进行一些逻辑处理时使用。

    1. class Person{
    2. public Person(){
    3. System.out.println("构造方法");
    4. }
    5. static{//静态块块
    6. System.out.println("静态块");
    7. }
    8. }
    9. public class TestBlock{
    10. public static void main(String[] arg){
    11. new Person();
    12. new Person();
    13. new Person();
    14. }
    15. }
    16. //静态块
    17. //构造方法
    18. //构造方法
    19. //构造方法
  • 主类中的静态块

    主类中的构造方法先于main方法执行,,在jdk1.7以前,java存在一个bug,可以没有main方法,只有静态代码块,后面修复了。

    1. public class TestBlock{
    2. static{//静态块块
    3. System.out.println("静态块");
    4. }
    5. public static void main(String[] arg){
    6. System.out.println("main方法");
    7. }
    8. }
    9. //结果:
    10. //静态块
    11. //main方法