/*代码块: *       用{}修饰的代码
 *         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的有参构造
*/

Java基础学习-代码块的更多相关文章

  1. Java基础(basis)-----代码块详解

    1.静态代码块 格式: static{ 内容..... } 随着类的加载而加载,而且只被加载一次 多个静态代码块之间按照顺序结构执行 优先其他各种代码块以及构造函数先执行 静态的代码块中只能执行静态的 ...

  2. 【Java基础】2、Java中普通代码块,构造代码块,静态代码块区别及代码示例

    Java中普通代码块,构造代码块,静态代码块区别及代码示例.Java中普通代码块,构造代码块,静态代码块区别及代码示例 执行顺序:静态代码块>静态方法(main方法)>构造代码块>构 ...

  3. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  4. Java基础学习(2)

    Java基础学习(二) 面向对象 对象:客观存在的事物 面向对象:人具体关注的事物的某些信息 类:是模子,确定对象会拥有的特征(属性)和行为(方法) 对象的属性:对象具有的各种特征 对象的方法:对象能 ...

  5. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  6. Java基础学习笔记(一)

    Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...

  7. [转帖]java基础学习总结——多态(动态绑定)

    https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态

  8. Java基础学习(3)

    Java基础学习(三) Java异常 Throwable类:所有异常的祖先类 Error:虚拟机异常.内存错误.没法处理 Exception:编码.环境.用户操作输入出现问题 非检查异常(自动捕获): ...

  9. java基础学习笔记五(抽象类)

    java基础学习总结——抽象类 抽象类介绍

随机推荐

  1. Remote System Upgrade With Cyclone III Devices

    系统设计者会遇到较短的设计周期.标准发展和系统调度的挑战,飓风III系列支持远程系统更新,通过其固有的重编程功能和专有电路来克服以上问题.远程系统更新帮助传递系统性能增强和bug修复,避免了昂贵的召回 ...

  2. java多线程总结(二)

    线程一般有6个状态: 新建状态:NEW 可运行状态:RUNNABLE 休眠状态:TIMED_WAITING 等待状态:WAITING 阻塞状态:BLOCKED 终止状态“TERMINATED 当我们使 ...

  3. linux网络基础设置 以及 软件安装

    ifconfig #查看所有已激活的网卡信息 临时配置 #yum install net-tools -y 默认ifconfig是没有安装的,可能需要安装 ifconfig eth0 #查看单独一块网 ...

  4. eclipse添加tomcat运行时

    方法一:添加jar包 方法二配置依赖 比如缺少javax.servlet.http.HttpServlet,ctrol+shift+t查找这个包 <dependencies> <de ...

  5. linux svn 命令

    windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的 ...

  6. CodeForces - 987D Fair (BFS求最短路)

    题意:有N个城市,M条双向道路连接两个城市,整个图保证连通.有K种物品,但每个城市只有一种,现在它们都需要S种物品来举办展览,可以去其他城市获取该城市的物品,花费是两城市之间的最短路径长度.求每个城市 ...

  7. Linux信号signal处理机制

    信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断.从它的命名可以看出,它的实质和使用很象中断.所以,信号可以说是进程控制的一部分.         一.信号的基本概念 ...

  8. dojo 代码调试

    安装 Firebug 使用firedug

  9. 本地存储(localStorage、sessionStorage、web Database)

    一.sessionStorage和localStorage sessionStorage和localStorage两种方法都是当用户在inPut文本框中输入内容并点击保存数据按钮时保存数据,点击读取数 ...

  10. ASP.NET的内置对象

    Request   该对象用于检索从浏览器向服务器所发送的请求中的信息.在按下“提交”按钮时,Request对象将读取和提取通过HTTP请求发送的参数.在用户提交表单时,包含在输入控件中的数据将与表单 ...