• Java-代码块、单例设计模式


    代码块

    在类当中编写的一段代码,跟构造方法的功能相似,每次创建对象的时候,都会自动的调用代码块

    public class Test1 {
        //用static修饰任何变量或方法:在内存都有单独的存储空间,外界可以通过类名直接去访问
        public static void main(String[] args) {
            Doo doo1=new Doo();
            System.out.println();
            Doo doo2=new Doo();
        }
    }
    class Doo{
        {//代码块,每次创建新的对象的时候,都会默认调用该部分
            System.out.println("代码块");
        }
    }

    1)企业中构造方法以及完全取代代码块
    2)static修饰代码块,叫做静态代码块,不管创建多少个对象,只执行一次
    企业开发中经常使用静态代码块,来执行一些初始化的操作

    public class Test1 {
        public static void main(String[] args) {
            Boo boo1=new Boo();
            Boo boo2=new Boo();
            Boo boo3=new Boo();
        }
    }
    class Boo{
        static{
            System.out.println("静态代码块");
        }
    }

    单例设计模式

    1.设计模式:程序员写代码总结的思想,软件开发中最常用几种代码的设计规则
    2.单例设计模式:保证一个类在一个系统当中只能有一个对象,必须记住,最简单的一种设计模式
    3.单例的好处:控制该类的对象的个数,只能有一个对象,减少系统压力,提高性能
    4.饿汉式的单例(重点):

    public class Test1 {
        public static void main(String[] args) {
            Moo moo1=Moo.getInstance();
            Moo moo2=Moo.getInstance();
    //如果两个对象是同一个对象,那么用“==”返回的结果就是true
            System.out.println(moo1==moo2);//结果是true
        }
    }
    class Moo{
        private Moo(){}//构造方法必须私有:外界不能随便利用构造方法来创建对象
        private static Moo moo=new Moo();//利用静态属性保存该类的对象(用static修饰属性或方法,在内存只有一个对象)
        public static Moo getInstance(){ //对外提供一个静态方法来获得该对象
            return moo;
        }
    }

    5.懒汉式的单例(最好会写):
    构造方法私有,在内存中对象不是直接创建,而是通过判断的方式,如果有该类的对象,则不创建,没有则创建一个新的对象

    public class Test1 {
        public static void main(String[] args) {
    //第一次执行getInstance方法,没有Noo对象,会创建一个Noo的对象返回
            Noo noo1=Noo.getInstance();
    //第二次再执行getInstance方法,内存已经有Noo的对象,直接返回Noo的对象,不再创建新的 对象
            Noo noo2=Noo.getInstance();
        }
    }
    class Noo{
        private Noo(){}//构造方法私有
    //定义对象(static)
        private static Noo noo=null;//不要先创建该类的对象,只要先定义即可
    //获得该对象的方法(判断)
        public static Noo getInstance(){ //对外提供一个方法来获得该类的对象(在该方法当中要进行判断,有则不创建对象,没有则创建该类的对象)
            if(noo==null){
                noo=new Noo();
            }
            return noo;
        }
    }
  • 相关阅读:
    tensorboard使用命令
    FFmpeg安装以及视频转成图片_图片转成视频_以及分辨率转换
    yolo3各部分代码详解(超详细)
    OpenCV+python 彩色图像通道拆分与组合并判断size,shape函数的用法与区别
    基于Keras 的VGG16神经网络模型的Mnist数据集识别并使用GPU加速
    以Mnist为例从头开始自己建立数据集,搭建resnet34,识别Mnist
    2017年Brats 脑肿瘤挑战赛Automatic Brain Tumor Segmentation using Cascaded Anisotropic Convolutional Neural Networks
    2018年BRATS 肿瘤分割挑战赛第三名分割方案One-pass Multi-task Networks with Cross-task Guided Attention for Brain Tumor Segmentation
    脑胶质瘤论文笔记
    .npy文件的保存与加载
  • 原文地址:https://www.cnblogs.com/lilyo/p/12792739.html
Copyright © 2020-2023  润新知