package Static_Demo;
public class Demo2 {
public static void main(String[] args) {
// 学习静态代码块的特点,基本作用
System.out.println("================main方法作为执行输出=================");
}
/*
* 特点:与类一起加载,自动触发,优先执行
* 作用:可以再程序加载的时候进行静态数据的初始化操作(准备内容)
* */
static {
System.out.println("===============静态代码块执行==============");
}
}
通过程序运行结果我们可以知道再程序中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 = "小叮当";
}
}
静态代码块执行一次,可以对于静态数据进行初始化赋值操作
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);
}
}
程序:
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);
}
}
黑马程序员