代码块(个人学习笔记黑马学习)

文章通过Java代码展示了静态代码块用于初始化静态资源,如在斗地主游戏中创建并填充静态ArrayList集合来存储54张牌。实例代码块则在每次创建对象时触发,文章强调了静态成员与非静态成员的区别以及它们在程序执行过程中的作用。
摘要由CSDN通过智能技术生成

静态代码块

package com.itheima.d3_static_code;

public class StaticDemo1 {

    public static String schoolName;

    /**
     * 静态代码块:用static修饰,属于类,与类一起优先加载一次,自动触发执行
     * 作用:可以初始化静态资源
     */
    static {
        System.out.println("静态代码块被触发了");
        schoolName="黑马";
    }


    public static void main(String[] args) {
        System.out.println("main方法执行");
        System.out.println(schoolName);

    }
}

 

构造代码块(实例代码块)

package com.itheima.d3_static_code;

public class StaticDemo2 {

    public StaticDemo2() {
        System.out.println("无参构造器被触发执行");
    }

    /**
     * 实例代码块:无static修饰,属于对象,每次构造对象时,都会触发一次
     */
    {
        System.out.println("实例代码块被触发执行");
    }

    public static void main(String[] args) {
        //理解实例代码块(构造代码块)

    }
}

 

练习:斗地主游戏

需求:
在启动游戏房间的时候,应该提前准备好54张牌,后续才可以直接使用这些牌数据
分析:

  • 该房间只需要一副牌
  • 定义一个静态的ArrayList集合存储54张牌对象,静态的集合只会加载一份
  • 在启动游戏房间前,应该将54张牌初始化好
  • 当系统启动的同时需要准备好54张牌数据,此时可以用静态代码块完成 
  • package com.itheima.d3_static_code;
    
    import java.util.ArrayList;
    
    public class StaticDemo3 {
    
        /**
         * 1.定义一个静态集合,这样这个集合只能加载一个,因为当前房间只需要一副牌
         *
         */
        public static ArrayList<String> cards=new ArrayList<>();
    
        /**
         * 2.在程序真正运行main方法前,把54张牌放进去,后续游戏可以使用     *
         */
        static {
            //定义一个数组存储全部点数,类型确定,个数确定
            String[] sizes={"3","4","5","6","7","8","9","10","J","Q","K","2"};
            //定义一个数组存储全部的花色,类型确定,数量确定
            String[] colors={"♥","♠","♦","♣"};
            //遍历点数
            for (int i = 0; i < sizes.length; i++) {
                for (int j = 0; j < colors.length; j++) {
                    String card=sizes[i]+colors[j];
                    cards.add(card);
                }
            }
            cards.add("小🃏");
            cards.add("大🃏");
        }
    
    
    
    
    
        public static void main(String[] args) {
            //模拟游戏启动前,初始化54张扑克牌
            System.out.println("新牌"+cards);
        }
    }
    

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值