目录
- 前言
- 第十五章 代码块
-
- 15.1 代码块概述
- 15.2 静态代码块
-
- 15.2.1 格式
- 15.2.2 特点
- 15.2.3 使用场景
- 15.3 构造代码块(了解,用的少)
-
- 15.3.1 格式
- 15.3.2 特点
- 15.3.3 使用场景
- 【静态代码块案例】斗地主游戏
前言
- 该文章为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♦, 大♛, 小♛]