static{} 静态代码块,只加载一次。
代码块中可以处理静态资源。如初始化。
与类一起执行。执行顺序优先于main方法
应用案例
斗地主游戏初始化牌。
public class StaticCodeTest3 {
/**
模拟初始化牌操作
点数: "3","4","5","6","7","8","9","10","J","Q","K","A","2"
花色: "♠", "♥", "♣", "♦"
1、准备一个容器,存储54张牌对象,这个容器建议使用静态的集合。静态的集合只加载一次。
*/
public static ArrayList<String> cards = new ArrayList<>();
/**
2、在游戏启动之前需要准备好54张牌放进去,使用静态代码块进行初始化
*/
static{
// 3、加载54张牌进去。
// 4、准备4种花色:类型确定,个数确定了
String[] colors = {"♠", "♥", "♣", "♦"};
// 5、定义点数
String[] sizes = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
// 6、先遍历点数、再组合花色
for (int i = 0; i < sizes.length; i++) {
// sizes[i]
for (int j = 0; j < colors.length; j++) {
cards.add(sizes[i] + colors[j]);
}
}
// 7、添加大小王
cards.add("小🃏");
cards.add("大🃏");
}
public static void main(String[] args) {
System.out.println("新牌:" + cards);
}
}
构造代码块,基本不用。
{}
属于对象,每次构建对象时会执行,执行顺序优先于构造器。
public class TestDemo2 {
private String name;
/**
属于对象的,与对象一起加载,自动触发执行。
*/
{
System.out.println("==构造代码块被触发执行一次==");
name = "张麻子";
}
public TestDemo2(){
System.out.println("==构造器被触发执行==");
}
public static void main(String[] args) {
// 目标:学习构造代码块的特点、基本作用
TestDemo2 t = new TestDemo2();
System.out.println(t.name);
TestDemo2 t1 = new TestDemo2();
System.out.println(t1.name);
}
}
本文介绍了Java中的静态代码块和构造代码块的使用。静态代码块用于类的初始化,例如在斗地主游戏中初始化牌组,只加载一次。而构造代码块则在创建对象时执行,优先于构造器。通过示例代码展示了如何在静态代码块中初始化静态集合,并在构造代码块中设置对象属性。
1016

被折叠的 条评论
为什么被折叠?



