JAVA 构造代码块与局部代码块

JAVA 构造代码块与局部代码块

目录

  • JAVA 构造代码块与局部代码块
    • 构造代码块
    • 局部代码块

形式:{ 代码… }

构造代码块

构造代码块的特点

位置: 在类的内部,在方法的外部
作用: 用于抽取构造方法中的共性代码
执行时机: 每次调用构造方法前都会调用构造代码块
注意事项: 构造代码块优先于构造方法加载

/**
* 构造代码块:{}
*1.位置:类里方法外
* 2.执行时机:每次创建对象时,都会执行构造代码块,并且优先于构造方法执行
* 3:作用:用于提取所有构造方法的共性功能
*/

package cn.tedu.oop2;
/**本类用于测试代码块*/
public class TestBlock {
    public static void main(String[] args) {
//        System.out.println("今天特别冷,注意保暖");
        Pig p = new Pig();
        Pig p2 =new Pig();
        Pig p3 = new Pig(666);
        Pig p4  =new Pig("xxxx");
    }

}
//1.创建一个小猪类用来测试
class Pig{
    //2.定义属性
    String food;//食物
    int age;//年龄
    //5.创建本类的构造代码块
    //4.提供本类的无参构造

    /**
     * 构造代码块:{}
     *1.位置:类里方法外
     * 2.执行时机:每次创建对象时,都会执行构造代码块,并且优先于构造方法执行
     * 3:作用:用于提取所有构造方法的共性功能
     */
    {
        System.out.println("我是一个构造代码块");
        System.out.println("咱可是黑猪肉222~");
    }
    //4.提供本类的无参构造与含参构造
    public Pig(){
        System.out.println("无参构造");

    }

    public Pig(int n){
        System.out.println("含参构造1");
    }

    public Pig(String n){
        System.out.println("含参构造2");
    }
    //3.定义普通方法
    public void eat(){
        System.out.println("小猪爱吃菜叶子");
    }
}

JAVA 构造代码块与局部代码块_第1张图片

局部代码块

位置: 在方法里面的代码块
作用: 通常用于控制变量的作用范围,出了花括号就失效
注意事项: 变量的作用范围越小越好,成员变量会存在线程安全的问题

练习:测试代码块的加载顺序
执行顺序:构造代码块->构造方法->普通方法->局部代码块

  • 1.当创建对象时,会触发构造函数
  • 2.创建对象时,也会触发构造代码块,并且构造代码块优先于构造方法执行
  • 3.我们创建好对象后,才能通过对象调用普通方法
  • 4.如果普通方法里有局部代码块,才会触发对应的局部代码块

你可能感兴趣的:(Tedu第一阶段,java,开发语言)