【Java基础笔记】第十五章 代码块

前言

  • 该文章为Java基础自学笔记
  • 其他内容:Java基础学习笔记目录
  • 学习用书:
    《Java核心技术 卷Ⅰ 基础知识(第10版)》
    《Java经典编程300例》

第十五章 代码块

15.1 代码块概述

  • 代码块是类的五大成分之一(成员变量、构造器、方法、代码块、内部类),定义在类中方法外
  • 在Java类下,使用 { } 括起来的代码被称为代码块
  • 代码块分为静态代码块和构造代码块

15.2 静态代码块

15.2.1 格式

	static {...}

15.2.2 特点

  • 需要通过static关键字修饰
  • 随着类的加载而加载,自动触发
  • 优先执行
  • 只执行一次

15.2.3 使用场景

  • 在类加载的时候做一些静态数据初始化的操作,以便后续使用
public class CodeBlockDemo1 {
    public static int account;

    static{
        System.out.println("==静态代码块触发执行==");
        account = 100;
    }

    public static void main(String[] args) {
        System.out.println("==main方法执行==");
        System.out.println(account);
    }
}
==静态代码块触发执行==
==main方法执行==
100

15.3 构造代码块(了解,用的少)

15.3.1 格式

	{...}

15.3.2 特点

  • 每次创建对象,调用构造器执行时,都会执行该代码块中的代码
  • 在构造器执行前执行

15.3.3 使用场景

  • 初始化实例资源
public class CodeBlackDemo2 {

    private String name;

    {
        System.out.println("==构造器代码块触发执行==");
        name = "李明";
    }

    public CodeBlackDemo2() {
        System.out.println("==构造器触发执行==");
    }

    public static void main(String[] args) {
        CodeBlackDemo2 test1 = new CodeBlackDemo2();
        System.out.println(test1.name);
        CodeBlackDemo2 test2 = new CodeBlackDemo2();
        System.out.println(test2.name);
    }
}
==构造器代码块触发执行==
==构造器触发执行==
李明
==构造器代码块触发执行==
==构造器触发执行==
李明

【静态代码块案例】斗地主游戏

  • 需求:
    • 在启动游戏房间的时候,需要提前准备好54张牌,后续才可以直接使用这些扑克牌数据
  • 分析:
    • 该房间只需要一副扑克牌
    • 定义一个静态的ArrayList集合存储54张牌对象,静态的集合只会加载一份
    • 在启动游戏房间前,应将54张牌初始化好
    • 当系统启动时需要准备好54张牌数据,此时可以用静态代码块完成
  • 代码
public class StaticCodeDemo {
    public static ArrayList<String> cards = new ArrayList<>();

    static {
        String[] colors = {"♠", "♥", "♣", "♦"};
        String[] sizes = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
        for (String size : sizes) {
            for (String color : colors) {
                cards.add(size + color);
            }
        }
        cards.add("大♛");
        cards.add("小♛");
    }

    public static void main(String[] args) {
        System.out.println(cards);
    }
}
  • 测试
[3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, J, J, J, J, Q, Q, Q, Q, K, K, K, K, A, A, A, A, 2, 2, 2, 2, 大♛, 小♛]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值