013——static静态关键字

static 静态关键字

static 的作用

static 是什么?


img

  • static 是静态的意思,可以用来修饰成员变量、成员方法。

  • static 修饰成员变量之后称为静态成员变量(类变量),修饰方法之后称为静态方法(类方法)。

  • static 修饰后的成员变量,可以被类的所有对象共享(访问、修改)。

static 修饰成员变量的用法

img


static 修饰成员变量的内存原理

img

static 修饰成员方法的基本用法

成员方法分类

img


使用场景

img


成员方法的分类和访问分别是什么样的?

img

案例一


/**
     *  静态成员方法 : 有static修饰 , 归属于类 , 可以被共享访问 , 用类名或者对象名都可以访问
     */

    public static int getMax(int number_1 , int number_2) {
        return number_1 > number_2 ? number_1 : number_2;
    }

细节体现

img


static 修饰成员方法的内存原理

img

static 的注意事项

img


 public static int onLineNumber = 10;

public static void test() {
        System.out.println("加油!");
        System.out.println();
        System.out.println(onLineNumber);
        System.out.println(Test.onLineNumber);
    }

当访问实例成员时会报错

img


img


/**
     * 实例成员
     */

    public String name;

    /**
     * 实例方法
     */
    public void test2() {
        System.out.println(onLineNumber);
        test();
        System.out.println(name);
    }


img

如果出现 this 关键字时会报错

img

static 应用知识:工具类

工具类
工具类是什么?
  • 类中都是一些静态方法,每个方法都是以完成一个共用的功能为目的,这个类用来给系统开发人员共同使用的。

img

使用工具类的好处

img

img

工具类定义时其他要求

img

案例演示

/**
     * 工具类
     */
    public static String createVerifyCode(int number) {
        // 开发一个验证码
        // 1. 定义一个变量记住验证码
        String code = "";

        // 2. 定义一个变量记住全部验证码字符
        String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        // 3. 定义一个循环生成几个随机索引 , 去得到几个字符
        Random random = new Random();
        for (int i = 0; i < number; i++) {
            int index = random.nextInt(data.length());
            // 4. 获取随机索引对应的字符 , 链接给code
            code += data.charAt(index);
        }
        return code;
    }

总结

img

img

代码块

img

代码块的分类

  • 静态代码块:

  • 构造代码块(了解,见的少):

代码块的作用

img

格式

静态代码块

/**
     *  静态代码块 : 由static修饰 , 属于类 , 与类一起优先加载一次 , 自动触发执行
     *
     *  作用: 可以初始化静态资源
     *
     */

    static {
        System.out.println("静态代码块被执行了!");
    }

实例代码块

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

静态代码块的应用案例

静态代码块的作用是什么?

img

案例演示

img


package com.north.d3_static_code;

import java.util.ArrayList;

/**
 * @author North
 * @date 10/6/2022 2:14 PM
 *
 *  目标 : 模拟游戏启动前 , 初始化54张牌数据
 */
public class StaticTest {

    /**
     *  1. 定义一个静态的集合 , 这样这个集合只加载一个 , 因为当前房间只需要一副牌
     */

    public static ArrayList<String> cards = new ArrayList<>();

    /**
     *  2. 在程序真正运行main方法前 , 把54张牌放进去 ,后续游戏可以直接使用了
     */

    static {
        /**
         *  3. 正式做牌 , 放到集合中去
         */
        // a. 定义一个数组春初全部点数 , 类型确定了, 个数确定了
        String[] sizes = {"2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "J" , "Q" , "k" , "A"};

        // b. 定义一个数组存储全部的花色 , 类型确定了 , 个数确定了

        String[] flowers = {"♥" , "♠" , "♦" , "♣"};

        // c. 遍历点数

        for (int i = 0; i < sizes.length; i++) {

            // d 遍历花色

            for (int m = 0; m < flowers.length; m++) {
                String card = sizes[i] + flowers[m];

                cards.add(card);
            }
        }

        // e. 单独加入大小王

        cards.add("大王");
        cards.add("小王");
    }



    public static void main(String[] args) {

        // 输出牌数
        System.out.println("点数" + cards);
    }
}


输出结果

点数[2, 2, 2, 2, 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, 大王, 小王]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值