JAVA代码块非静态代码块与静态代码块构造函数比较

来源:互联网 发布:软件性能指标描述 编辑:程序博客网 时间:2024/05/14 11:43

昨天在工作中看到了一串代码,让我有点三脸懵逼

public String insertPersonSql() {
  return new SQL() {{
    INSERT_INTO("PERSON");
    VALUES("ID, FIRST_NAME", "#{id}, #{firstName}");
    VALUES("LAST_NAME", "#{lastName}");
  }}.toString();
}
作为一个刚入职的新员工,还是贯彻不懂就问的原则,结果同事也说,平时是直接复制粘贴的,一下子答不上来了。今天去加班,搜了好久,发现了代码块的概念,以前居然真的不知道有这么一个东东。查阅了一些资料,发现这个非静态代码块也被称作构造代码块,没构造一个实例都会执行一次,构造代码块无论如何初始化对象都会执行而构造函数只有匹配函数时才会执行。有下面一个例子

class Person
{
    String name;
    //构造函数的代码块
    {
        System.out.println("哇啊");
    }


    Person()
    {
        name="baby";
        show();
    }


    Person(String name)
    {
        this.name=name;
        show();
    }


    void show()
    {
        System.out.println("name"+name);
    }
}








class  StaticConstructor
{
    public static void main(String[] args) 
    {
        Person p1=new Person();
        Person p2=new Person("旺财");
    }
}
//哇啊
//namebaby
//哇啊
//name旺财



阅读全文
0 0