
当有一个静态集合要做数据代码块时:可以直接放在静态代码块,当程序启动时,静态代码块和静态集合会优先加载,此时数据已经准备好了,可以在main方法中直接用
static代码块可以理解为:提前为程序准备数据(static代码块,可以初始化static静态成员)
package com.itheima.d3_static_code;import java.util.ArrayList;public class StaticTest3 {/*** 1. 定义一个静态的集合(静态的属于类,只会加载一次),这样整个集合只加载一个,因为当前房间只需要一副牌* 静态代码块可以初始化静态变量*/public static ArrayList<String> cards = new ArrayList<>();// 定义静态集合确实和定义静态变量一样// public static int age = 18; 这里的ArrayList<String>相当于int变量类型,cards相当于变量名,new ArrayList<>()相当于赋值(值是地址)/*** 2.在程序正在运行main方法前,把54张牌放进去,后续游戏可以直接使用* 可以理解为:提前为程序准备数据*/static {// 当有一个静态集合要做数据代码块时:可以直接放在静态代码块,当程序启动时,静态代码块和静态集合会优先加载,此时数据已经准备好了,可以在main方法中直接用// 3.正式做牌,放到集合中去。// a. 定义一个数组存储全部点数:类型确定了,个数确定了String[] sizes = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};// b. 定义一个数组存储全部的花色:类型确定了,个数确定了String[] colors = {"♥","♠","♦","♣"};// c.遍历点数for (int i = 0; i < sizes.length; i++) {// sizes[i]// d.遍历花色 在点数里面再定义一个for循环嵌套,这样每次执行一次点数,就会把这个点数的所有花色都遍历一般for (int j = 0; j < colors.length; j++) {// colors[i]// 一张牌String card = sizes[i] + colors[j]; // 一张牌相当于每次遍历的点数,加上他对应的所有花色cards.add(card); // 将每次遍历得到的牌存储到定义的集合中}}// e. 单独加入大小王(加入到牌的集合中去cards)cards.add("大王");cards.add("小王");}public static void main(String[] args) {// 目标:模拟游戏启动前,初始化54张牌数据// 将牌全部打印出来// System.out.println("新牌:" + cards);// cards集合存储的是String类地址,但是String类比较特殊,直接打印会打印出集合中所有的字符串的值for (int i = 0; i < cards.size(); i++) {System.out.print(cards.get(i) + "\t");}}}
