/*代码块: *       用{}修饰的代码
 *         1.局部代码块:控制变量,存在方法中,控制变量的生命周期(作用域)
 *         2.构造代码块:提取构造方法中的共性,每次创建对象,都会执行,并且在构造方法执行之前执行。
 *         3.静态代码块:随着类的加载而加载,和对象无关,只加载一次。
 */

 1.局部代码块
public class codeblock {
    public static void main(String[] args) {
        {
            int num=10;
        }
        System.out.println(num);
    }
}当前的变量num局部代码块当中所以输出不了num,所以局部代码块控制变量,存在方法中,控制变量的生命周期(作用域)


2.构造代码块
public class codeblock {
    public static void main(String[] args) {
        student student=new student();
        student student2=new student("bai-boy",18);
    }
}

class student{
    String name;
    int age;
    /*构造方法*/
    public student() {
            System.out.println("bai-boy");       System.out.println("18");

}
public student(String name,int age) {     this.name=name;     this.age=age;     System.out.println("bai-boy");    System.out.println("18");}}
这段代码,这里的构造方法中存在一些共性(共同特点),所以我们可以构造代码块去给他装起来。
public class codeblock {
    public static void main(String[] args) {
        student student=new student();
        student student2=new student("bai-boy",18);
    }
}

class student{
    String name;
    int age;
    {
       System.out.println("bai-boy");
    }
    /*构造方法*/
    public student() {      System.out.println("无参空构造");
    }
    public student(String name,int age) {
        this.name=name;
        this.age=age;    System.out.println("有参构造");
    }
}输出的结果为:bai-boy无参空构造bai-boy有参构造所以我们的构造代码块是在方法执行之前执行。

 

3.静态构造class student{
    String name;
    int age;
    static {
        System.out.println("bai-boy");
    }
    public student() {
        System.out.println("无参空构造");
    }
    public student(String name,int age) {
        this.name=name;
        this.age=age;
        System.out.println("有参构造");
    }
}静态构造的与构造代码块的区别是前面有个static(静态),静态随着类的加载而加载,而且只加载一次,与对象创建的次数无关,所以是在类的创建后就打印输出结果为·bai-boy无参空构造有参构造
package Object_Oriented;
/*代码块面试题:填写一下输出的顺序*/
public class code_block_test {
    static {
        System.out.println("我是code_block_test的静态代码块");//(1)类的加载而加载,所以首先它打印输出
    }
    {
        System.out.println("我是code_block_test的构造代码块");
    }
    public static void main(String[] args) {//因为code_block_test类没有方法,所以执行main中的代码
        codeclass codeclassone=new codeclass();
        /*首先创建codeclassone对象,因为codeclass类中有static代码块 所以只调用一次,并且在第一次创建中打印输出static代码块代码
          然后打印输出构造代码块,因为是共性所以是在构造方法之前打印输出,所以接下来打印输出构造代码块中的代码*/
        codeclass codeclasstwo=new codeclass("bai-boy",18);
    }
}
class codeclass{
    String name;
    int age;
    static {
        System.out.println("我是codeclass的静态代码块");
    }
    {
        System.out.println("我是codeclass的构造代码块");
    }
    public codeclass() {
        System.out.println("我是codeclass的无参空构造");
    }
    public codeclass(String name,int age) {
        System.out.println("我是codeclass的有参构造");
    }
}
/*
     所以整个输出结果为:
        我是code_block_test的静态代码块
        我是codeclass的静态代码块
        我是codeclass的构造代码块
        我是codeclass的无参空构造
        我是codeclass的构造代码块
        我是codeclass的有参构造
*/

最新文章

  1. Entity Framework Code First添加修改及删除单独实体
  2. Linux下PHP的完全卸载
  3. Zygote进程【3】——SystemServer的诞生
  4. android开发学习---layout布局、显示单位和如何进行单元测试
  5. centeros iptable模板文件
  6. gcviewer待整理
  7. 兼容个个浏览器Cookie的读写
  8. Mac OS X和iOS上基本数据类型的字节数
  9. Ppoj 1014 深搜
  10. 在Intellij idea 2017中运行tomcat 8.5
  11. poj 2065 高斯消元(取模的方程组)
  12. GIT-windows系统下Gitblit的使用方式
  13. Vue v-for循环添加表单v-model不重复变动的注意事项!
  14. 利用css3给座右铭设置漂亮的渐变色
  15. linux下用python搭建简单的httpServer
  16. k64 datasheet学习笔记3---Chip Configuration之System modules
  17. WebSocket集成XMPP网页即时通讯1:Java Web Project服务端/客户端Jetty9开发初探
  18. (转)linux top命令中各cpu占用率含义及案例分析
  19. ConcurrentHashMap 源码阅读小结
  20. Python3入门(十一)——IO编程

热门文章

  1. Myeclipse中文乱码解决方式
  2. 使用Stanford Parser进行句法分析
  3. C#字段属性设置
  4. 微信小程序将带来web程序员的春天!
  5. CNN学习笔记:卷积运算
  6. Python Tornado框架(TCP层)
  7. JAVA接口中不可以有静态方法吗
  8. linux 基础知识总结2
  9. ie9下面的console的bug
  10. mount、umount、fuser命令使用小结