/*代码块: *       用{}修饰的代码
 *         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. Android图片加载框架Picasso最全使用教程1

    Picasso介绍 Picasso是Square公司开源的一个Android图形缓存库 A powerful image downloading and caching library for And ...

  2. django settings相关配置

    settings """ Django settings for mysite project. Generated by 'django-admin startproj ...

  3. shell脚本调用传参【转载】

    转自:https://www.cnblogs.com/cisum/p/8010658.html 1.直接使用$0,$1,$2,$3 $0是脚本的名字,就是按顺序来 #!/bin/bash # auth ...

  4. if 条件判断

    逻辑判断的布尔值(true&false) 1.逻辑值(bool)用来表示诸如:对与错,真与假,非于空等概念. 2.逻辑值包含了两个值:--true:表示非空的量(比如:string,tuple ...

  5. Delphi 正则表达式之TPerlRegEx 类的属性与方法(4): Replace

    Delphi 正则表达式之TPerlRegEx 类的属性与方法(4): Replace // Replace var   reg: TPerlRegEx; begin   reg := TPerlRe ...

  6. Redis以服务的形式启动

    ★期望目标:把RedisWatcher安装为windows服务. 安装完成后, 到安装目录下修改watcher.conf. 注意,任何路径都不可包含空格,中文,特殊字符,且全部使用绝对路径 ※配置文件 ...

  7. 【leetcode刷题笔记】Majority Element

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  8. StringUtils用法(isNotEmpty和isNotBlank)

    isNotEmpty将空格也作为参数,isNotBlank则排除空格参数 参考 Quote StringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String ...

  9. nginx 第一天

    来公司第一天先装了一下nginx 第一步:  先装brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/ ...

  10. v4l2 下载

    To clone the master development repository, install git, and run: git clone git://github.com/torvald ...