当前位置: 首页 > article >正文

Java学习第七天

成员方法分类:

静态成员方法(有static修饰 属于类)建议用类名访问,也可以用对象访问

实例成员方法(无static修饰 属于对象)只能用对象出发访问

使用static来定义一些工具类

工具类直接使用类名.方法调用即可,将构造器私有化,不要对外产生对象。

/*
* 工具类
* */
public class ArraysUtils {

    //构造器私有化
    private ArraysUtils(){

    }

    //数组转字符串
    public static String tostring(int[] arr){
        if(arr == null){
            return null;
        }
        String result = "[";
        for (int i = 0; i < arr.length; i++) {
            if(i == arr.length - 1){
                result += (arr[i] + "]");
            }else{
                result += (arr[i] + ",");
            }
        }
        return result;
    }

    //求数组的平均值
    public static double getAverage(int[] arr){
        if(arr == null){
            return 0.0;
        }
        double ave = 0.0;
        double sum = 0.0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        ave = sum/arr.length;
        return ave;
    }

}





//测试类
public class TestDemo {
    public static void main(String[] args) {
        int[] arr = {1,5,44,29,36,7,12,23,18,489};
        System.out.println(arr);
        System.out.println("原始数组为" + ArraysUtils.tostring(arr));
        System.out.println("均值为" + ArraysUtils.getAverage(arr));
        int[] arr1 = null;
        System.out.println("空数组为" + ArraysUtils.tostring(arr1));
        System.out.println("均值为" + ArraysUtils.getAverage(arr1));
    }
}

代码块

类中的代码块在main方法之前执行,可以做一些初始化操作,

构造代码块在创建对象时候触发,比构造器先执行。

静态代码块用于初始化类;构造代码块用于初始化对象、实例资源。

单例设计模式

设计模式是一套被前人反复使用、多数人知晓、经过分类编目的代码设计经验的总结,后来者可以拿来解决问题。

设计模式是软件中的常见解决方案,好的设计模式可以进一步的提高代码的重用性。

单例模式:可以保证系统中,应用该模式的这个类只有一个实例,即一个类永远只能创建一个对象。例如任务管理器对象我们只需要一个就可以解决问题了,这样可以节省内存空间。

饿汉单例设计模式

在用类获取对象的时候,对象已经提前为你创建好了。

设计步骤:

1.定义一个类,把构造器私有化。

2.定义一个静态变量存储一个对象。

/*
* 学会饿汉单例模式
* */
public class SingleInstance {
    //构造器私有化
    private SingleInstance(){

    }
    //定义一个公开的静态变量来存储对象
    //饿汉式单例模式:在这里加载静态变量的时候就会创建一个对象。
    public static SingleInstance s1 = new SingleInstance();
}

懒汉单例模式

在真正需要该对象的时候,才去创建一个对象(延迟加载对象)。

/*
* 学会使用懒汉单例模式
* */
public class SingleInstance2 {
    //构造器私有化
    private SingleInstance2(){

    }

    //创建一个公共的静态变量来存储实例对象
    private static SingleInstance2 s2;

    //提供一个公共的方法来获取实例对象
    public static SingleInstance2 getInstance(){
        //实例对象为空,则创建一个直接返回 否则返回已经创建的实例对象

        /*以下注释代码有问题,实现不了懒汉单例,因为第一次创建时,返回一个新对象,但是该对象并没有
        赋值给s2,这样下次执行getinstance方法时候,s2仍然为null,所以每次返回的都不一样。*/
        /*if(s2 == null){
            //第一次创建
            return new SingleInstance2();
        }
        return s2;*/
        
        if(s2 == null){
            s2 = new SingleInstance2();
        }
        return s2;
    }

}

懒汉单例最好使用private私有化变量,饿汉单例必须public,因为懒汉单例外部是通过getinstance方法来获取对象的,而该方法是public公开的;饿汉单例需要外部来获取该变量,必须public公开。

继承

就近原则,先局部,然后子类,最后父类。

私有方法不能被重写


http://www.kler.cn/a/294543.html

相关文章:

  • 基于Python+Django+Vue3+MySQL实现的前后端分类的商场车辆管理系统
  • Springboot集成syslog+logstash收集日志到ES
  • 【go从零单排】Timer、Epoch 时间函数
  • Web安全之SQL注入---基础
  • Unity3D
  • AI写作(二)NLP:开启自然语言处理的奇妙之旅(2/10)
  • 【功能实现】如何实现点击后跳转到顶部??
  • 57-java csrf防御方案
  • 【Redis】Redis 集群搭建与管理: 原理、实现与操作
  • vue项目打包后,生成的index.html直接本地打开后没内容
  • Web:攻防世界unseping
  • 11Python的Pandas:可视化
  • Element Plus(Vue 3 版本)来实现图片轮播
  • P01-Java何谓数组
  • sheng的学习笔记-AI-概率图,隐马尔可夫HMM,马尔可夫随机场MRF,条件随机场CRF
  • 尝试用java spring boot+VUE3实现前后端分离部署(8/31)
  • 时间段切块算法
  • Flask中 blinker 是什么
  • 【Spring基础1】- Spring 启示录-理解IoC控制反转
  • 电脑删除的Word文件怎么恢复?快速恢复技巧分享
  • C++入门基础
  • Mail PHP: 如何设置SMTP服务器以发送邮件?
  • Vue 3结合Element Plus中,实现一个级联选择器(Cascader)来展示省市区
  • CSS解析:定位和层叠上下文
  • Elasticsearch 向量数据库本地部署 及操作方法
  • Learn ComputeShader 09 Night version lenses