面向对象进阶5--代码块

static应用知识–代码块

代码块的概述及划分

面向对象进阶5--代码块_第1张图片

静态代码块程序说明

package Static_Demo;

public class Demo2 {
    public static void main(String[] args) {
        // 学习静态代码块的特点,基本作用
        System.out.println("================main方法作为执行输出=================");
    }
    /*
    * 特点:与类一起加载,自动触发,优先执行
    * 作用:可以再程序加载的时候进行静态数据的初始化操作(准备内容)
    * */
    static {
        System.out.println("===============静态代码块执行==============");
    }
}

面向对象进阶5--代码块_第2张图片

通过程序运行结果我们可以知道再程序中static代码块再程序中优于main方法执行

package Static_Demo;

public class Demo2 {

    public static String studentname;

    public static void main(String[] args) {
        // 学习静态代码块的特点,基本作用
        System.out.println("================main方法作为执行输出=================");
        System.out.println(studentname);
    }
    /*
    * 特点:与类一起加载,自动触发,优先执行
    * 作用:可以再程序加载的时候进行静态数据的初始化操作(准备内容)
    * */
    static {
        System.out.println("===============静态代码块执行==============");
        studentname = "小叮当";
    }
}

面向对象进阶5--代码块_第3张图片

静态代码块执行一次,可以对于静态数据进行初始化赋值操作

构造代码块程序说明

package Static_Demo;

public class Demo3 {
    private static String name;
    /*
    * 每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行
    * 属于对象的与对象一起加载并自动触发执行
     * */
    {
        System.out.println("====构造代码块被触发执行一次====");
        name = "乔巴";
    }

    public Demo3(){
        System.out.println("=====构造代码块触发执行===");
    }


    public static void main(String[] args) {
        // 学习构造代码块的特点,基本作用
        Demo3 d = new Demo3();
        System.out.println(d.name);

        Demo3 d1 = new Demo3();
        System.out.println(d1.name);


    }
}

面向对象进阶5--代码块_第4张图片

静态代码块应用案例

面向对象进阶5--代码块_第5张图片
逻辑分析:

  1. 在启动游戏房间的时候,应该提前准备好54张牌,后续才可以直接使用这些牌数据
  2. 该房间只需要一副扑克牌,不需要重复生成
  3. 扑克牌存储需要用集合类进行存储,类型为字符串类型,类型为静态类型,静态的集合只会加载一次
  4. 再游戏开始前初始化好一副牌,使用静态代码块进行初始化
  5. 准备54张牌,准备4种不同的花色,进行组合
  6. 添加大小王

程序:

package StaticDemo2;

import java.util.ArrayList;

/*
*
String[] colors = {"♥","♠","♦","♣"};
String[] numbers ={"A","J","Q","K","2","3","4","5","6","7","8","9","10"};
* */
public class staticcode {
    //  在启动游戏房间的时候,应该提前准备好54张牌,后续才可以直接使用这些牌数据
    // 该房间只需要一副扑克牌,不需要重复生成
    // 1、扑克牌存储需要用集合类进行存储,类型为字符串类型,类型为静态类型,静态的集合只会加载一次
    public static ArrayList<String> card = new ArrayList<>();
    /*
    * 再游戏开始前初始化好一副牌,使用静态代码块进行初始化
    * */
    static {
        // 准备54张牌
        // 准备4种不同的花色
        String[] numbers = {"A","J","Q","K","2","3","4","5","6","7","8","9","10"};
        String[] colors = {"♥","♠","♦","♣"};
        for (int i = 0; i < numbers.length; i++) {
            for (int i1 = 0; i1 < colors.length; i1++) {
                card.add(numbers[i]+colors[i1]);
            }
        }
        // 添加大小王
        card.add("大");
        card.add("小");
    }

    public static void main(String[] args) {
        System.out.println(card);
    }


}

结果
面向对象进阶5--代码块_第6张图片

总结

面向对象进阶5--代码块_第7张图片

参考

黑马程序员

你可能感兴趣的:(java学习,java)