• Java核心编程学习 -- day7


    工具类

    工具类中的方法被共享时,推荐使用类名.方法名的形式访问共享方法

    将工具类构造函数私有化,使得外界无法产生工具类对象

    例:

    package day7.demo5;
    
    /**
     * @author NJR10byh
     * @date 2022/7/20 16:26:23
     * @description 构造方法私有化
     */
    
    public class telTool {
    
        // 构造方法私有化(工具类无需创造对象,外界也无法产生工具类对象)
        private telTool() {
        }
    
        public static String telHide(String tel) {
            String tel_hided = tel.substring(0, 3) + "****" + tel.substring(7, 11);
            return tel_hided;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    package day7.demo5;
    
    import java.util.Scanner;
    
    /**
     * @author NJR10byh
     * @date 2022/7/20 16:08:19
     * @description 调用工具类,隐私手机号码
     */
    
    public class task5 {
        public static void main(String[] args) {
            System.out.print("请输入手机号:");
            Scanner scanner = new Scanner(System.in);
            String s = scanner.nextLine();
    
            System.out.println(telTool.telHide(s));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    代码块

    静态代码块

    • 格式:static{}
    • 特点:用static关键字修饰,随着类一起被优先加载,只执行一次在main方法前执行
    • 使用场景:可以在类加载的时候进行一些数据的初始化操作

    构造代码块

    • 格式:{}
    • 特点:每次创建对象时,都会被执行,且在构造方法前执行
    • 使用场景:初始化实例资源

    单例模式

    饿汉单例

    在用类获取对象时,对象已经提前创建好了

    • 1、定义一个类,要把构造器私有化
    • 2、用一个静态变量存储一个对象
    package day7.demo7;
    
    /**
     * @author NJR10byh
     * @date 2022/7/20 17:46:44
     * @description 单例模式 -- 饿汉单例
     */
    
    public class task7 {
        public static void main(String[] args) {
            SingleInstance s1 = SingleInstance.instance;
            SingleInstance s2 = SingleInstance.instance;
    
            System.out.println(s1 == s2); // true
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    package day7.demo7;
    
    /**
     * @author NJR10byh
     * @date 2022/7/20 17:47:17
     * @description 单例模式 -- 饿汉单例
     */
    
    public class SingleInstance {
    
        public static SingleInstance instance = new SingleInstance();
    
        // 构造器私有化
        private SingleInstance() {
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    懒汉单例

    在真正需要改对象的时候,才去创建一个对象

    • 1、定义一个类,要把构造器私有化
    • 2、用一个静态变量存储一个对象
    • 3、提供一个返回单例对象的方法
    package day7.demo8;
    
    /**
     * @author NJR10byh
     * @date 2022/7/20 18:02:05
     * @description 单例模式 -- 懒汉单例
     */
    
    public class task8 {
        public static void main(String[] args) {
            SingleInstance instance1 = SingleInstance.getInstance();
            SingleInstance instance2 = SingleInstance.getInstance();
    
            System.out.println(instance1 == instance2); // true
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    package day7.demo8;
    
    /**
     * @author NJR10byh
     * @date 2022/7/20 18:02:29
     * @description 单例模式 -- 懒汉单例
     */
    
    public class SingleInstance {
        // 构造器私有化
        private SingleInstance() {
        }
    
        private static SingleInstance instance;
    
        public static SingleInstance getInstance() {
            // 只有第一次来创建对象,才创建一个新的对象返回
            if (instance == null) {
                instance = new SingleInstance();
            }
            // 如果对象不为null,说明对象已经被创建,直接返回该地址即可
            return instance;
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    练习代码: day7_code

  • 相关阅读:
    OpenCv快速入门(python版)
    LeetCode235. Lowest Common Ancestor of a Binary Search Tree
    Elasticsearch、Kibana以及Java操作ES 的快速使用
    MySQL数据库基础理论、部署与使用
    应用升级SpringCloud版本时的注意事项(Dalston升级到Edgware)
    编程语言的未来 1、JavaScript 到 TypeScript2、Java 到 kotlin3、C++ 到 Carbon
    基于FPGA的图像坏点像素修复算法实现,包括tb测试文件和MATLAB辅助验证
    比较含退格的字符串+每日温度
    Qt 数据库的注册和登录功能
    【vue3】06. 跟着官网学习vue3
  • 原文地址:https://blog.csdn.net/NJR10byh/article/details/125896070