【java】【面对对象高级1】static

news2024/10/1 12:54:58

目录

1、static修饰成员变量

 1.1 修饰成员变量

 1.2 成员变量的执行原理

2、static修饰成员变量的应用场景

3、static修饰成员方法

3.1 修饰成员方法

 3.2 成员方法的执行原理

4、static修饰成员方法的应用场景

 4.1 MyUtil工具类

 4.2 main

5、static的注意事项

5.1 类方法中可以直接访问类的成员,不可以直接访问实例成员

 5.2 类方法中既可以直接访问类的成员,也可以直接访问实例成员

 5.3 实例方法中可以出现this关键字,但类方法不可出现

6、static的应用知识:代码块

6.1 静态代码块

6.2 实例代码块

7、static的应用知识:单例设计模式

 7.1 饿汉式单例

 7.1.1 A

7.1.2 TestA

7.3 单例模式的应用场景和好处

7.4 懒汉式单例 

 7.4.1 B

7.4.2 TestB


前言:面对对象的高级,多关注语法的基本使用;多思考、练习、记忆;要自信,后面用起来就会了。

1、static修饰成员变量

 

 1.1 修饰成员变量

 

 

 

 1.2 成员变量的执行原理

 

2、static修饰成员变量的应用场景

 

 

 

3、static修饰成员方法

 

3.1 修饰成员方法

 

 3.2 成员方法的执行原理

 

4、static修饰成员方法的应用场景

 4.1 MyUtil工具类

package com.runa.staticdemo;

import java.util.Random;

public class MyUtil {
    // 构造器私有,
    private MyUtil() {
    }

    public static String CreateCode(int n) {
        //2 定义2个变量,一个是记住最终产生的随机验证码 一个是记住可能用到的全部字符
        String code = "";
        String data = "abcedfghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        Random r = new Random();
        // 3 定义一个循环产生每位的随机字符
        for (int i = 0; i < n; i++) {
            // 4 随机的一个字范围内的索引
            int index = r.nextInt(data.length());
            // 5  根据所有区全部字符data中提取字符
            code += data.charAt(index);


        }
        // 6 返回字符
        return code;
    }
}

 4.2 main

package com.runa.staticdemo;

public class Test {
    public static void main(String[] args) {
        System.out.println(MyUtil.CreateCode(4));
    }
}

 

5、static的注意事项

5.1 类方法中可以直接访问类的成员,不可以直接访问实例成员

 

 5.2 类方法中既可以直接访问类的成员,也可以直接访问实例成员

 5.3 实例方法中可以出现this关键字,但类方法不可出现

 

 

 

 

6、static的应用知识:代码块

 

6.1 静态代码块

 

 

 ​​​​​​​​​​​​​​

 

运行结果:

 

 ​​​​​​​​​​​​​​

 

  

6.2 实例代码块

 

 

 

 

7、static的应用知识:单例设计模式

 

 7.1 饿汉式单例

 7.1.1 A

package com.runa.staticdemo;

public class A {
    // 2定义一个类变量记住类的一个对象
    private static A a = new A();

    // 1 构造器私有
    private A() {
    }

    // 3 定义一个类方法返回类的对象
    public static A getObject(){
        return a;
    }
}

7.1.2 TestA

package com.runa.staticdemo;

public class TestA {
    public static void main(String[] args) {
        A a1 = A.getObject();
        A a2 = A.getObject();
        System.out.println(a1);
        System.out.println(a2);
    }
}

 

 

7.3 单例模式的应用场景和好处

 

 

7.4 懒汉式单例 

 7.4.1 B

package com.runa.staticdemo;

public class B {
    // 2定义一个类变量,用于存储这个类的一个对象
    private static B b;

    // 1 构造器私有
    private B() {
    }

    // 3 定义一个类方法,这个方法要保证第一次调研时才创建一个对象,后面调用时都会用着同一个对象返回
    public static B getInstance(){
        if(b == null){
          b = new B();
        }
        return b;
    }
}

7.4.2 TestB

package com.runa.staticdemo;

public class TestB {
    public static void main(String[] args) {
        B b1 = B.getInstance();// 第一次调用
        B b2 = B.getInstance();// 第二次调用
        System.out.println(b1);
        System.out.println(b2);
    }
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/788220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue中TodoList案例_编辑

nextTick: MyItem.vue 加一个编辑按钮&#xff0c;input框&#xff1a;blur失去焦点时触发事件handleBlur&#xff0c;ref获取真实dom&#xff1a; <inputtype"text"v-show"todo.isEdit":value"todo.title"blur"handleBlur(todo,$even…

Access violation at address. Read of address FFFFFFC

常规的数据操作&#xff1a; 见上图&#xff0c;数据保存在.ClientDataSet1数据集中&#xff0c;为了将参数逐条保存在Txt文件中&#xff0c;做了对ClientDataSet&#xff08;DBGridEh&#xff09;的循环写盘和读盘操作&#xff1a; 但是&#xff0c;原代码通过数据集循环 &…

IP 服务级别协议监控

工作场所分布在全球多个地点的企业通过 WAN 链接共享和接收数据&#xff0c;这需要跨广泛的网络位置和路径持续监控网络质量&#xff0c;以实现优化的性能水平和不间断的服务交付。 IP 服务水平协议 IP 服务级别协议 &#xff08;IP SLA&#xff09; 是一种网络测量技术&…

php开发实战分析(10):城市区县联动筛选

php开发实战分析系列目录 php开发实战分析(1)&#xff1a;mysql操作字段&#xff08;添加、删除、修改&#xff0c;多数据表中新增多个字段&#xff09;php开发实战分析(2)&#xff1a;cookie的动态使用&#xff08;设置、获取、删除、猜你喜欢原理、购物车调用&#xff09;ph…

热烈祝贺埃文科技荣获CCF第38届中国计算机应用大会计算机应用科学技术二等奖

2023年7月16-19日&#xff0c;第38届中国计算机应用大会&#xff08;CCF NCCA 2023&#xff09;暨2023年人工智能&#xff0b;应用学术会议在江苏苏州举办。埃文科技董事长兼总经理王永博士受邀出席智慧网安论坛&#xff08;一&#xff09;数据要素市场化&#xff0c;并发表《智…

本地私有仓库部署、docker--harbor私有仓库部署和管理

部署本地私有仓库 拉取镜像 修改daemon.json配置文件 重启docker服务 创建容器 为镜像打标签 上传镜像 查看私有仓库 其他主机拉取私有仓库镜像 Docker--harbor私有仓库 &#xff08;1&#xff09;什么是Harbor Harbor 是 VMware 公司开源的企业级 Docker Registry 项目…

React Dva项目中.roadhogrc.mock.js直接自动导入mock目录下所有文件方式

上文 React Dva项目中模仿网络请求数据方法 中&#xff0c;我们书写了Dva项目模拟后端数据的方式 但是 我们.roadhogrc.mock.js中的这个处理其实并不好用 我们还需要一个一个的引入 我们可以直接靠一段代码 import fs from fs; import path from path; const mock {} fs.re…

VarHandle:Java9中保证变量读写可见性、有序性、原子性利器

文章目录 一、什么是VarHandle0、JMM1、jdk9之前无锁技术的实现 二、VarHandle使用1、VarHandle 快速上手2、VarHandle常用方法3、实战案例1&#xff1a;解决可见性&#xff08;比volatile轻量&#xff09;4、实战案例2&#xff1a;解决指令重排序&#xff08;比volatile轻量&a…

3dsmax制作一个小人

文章目录 步骤起阶五官手臂短袖添加头发、头饰BodyPaint软件贴图导入到3dsmax 渲染 步骤 起阶 五官 手臂 短袖 添加头发、头饰 BodyPaint软件贴图 寻找网络贴图&#xff0c;用PS切割&#xff0c;用BodyPaint恢复纹理 导入到3dsmax 渲染

【干货防踩坑/全图文分步/Gitlab镜像仓库自动同步】Gitlab CE/EE镜像仓库的配置技巧(含ssh/密码两验证方法)

【干货踩坑】Gitlab CE/EE镜像仓库的配置技巧&#xff08;含ssh/密码两验证方法&#xff09; 众所周知&#xff0c;Gitlab是个好东西。为什么呢&#xff1f;GitHub没有的功能&#xff0c;他全有了。更何况还可以私有部署。这两天自己部署了Gitlab&#xff0c;然后想把自己的项…

springboot + redis + 注解 + 拦截器 实现接口幂等性校验

一、概念 幂等是一个数学与计算机学概念&#xff0c;在数学中某一元运算为幂等时&#xff0c;其作用在任一元素两次后会和其作用一次的结果相同。在计算机中编程中&#xff0c;一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 幂等函数或幂等方法是…

【C++杂货铺】内存管理

文章目录 一、C/C内存分布二、C内存管理方式2.1 new和delete操作内置类型2.2 new和delete操作自定义类型 三、operator new与operator delete函数四、new和delete的实现原理4.1 内置类型4.2 自定义类型 五、定位new表达式&#xff08;placement-new&#xff09;六、malloc/free…

二十三种设计模式第十八篇--责任链模式

责任链模式是一种行为型设计模式&#xff0c;它允许你将请求沿着处理者链传递&#xff0c;直到有一个处理者能够处理该请求为止。责任链模式将请求发送者和请求处理者解耦&#xff0c;从而使得多个处理者都有机会处理同一个请求。 该模式包含以下几个关键角色&#xff1a; 抽象…

CUDA之指针篇

CUDA教程 第一章 指针篇 第二章 cuda原理篇 第三章 随着人工智能的发展与人才的内卷&#xff0c;很多企业已将深度学习算法的C部署能力作为基本技能之一。面对诸多arm相关且资源有限的设备&#xff0c;往往想更好的提速&#xff0c;满足更高时效性&#xff0c;必将更多类似矩…

【高危】Spring Security鉴权规则错误配置风险

漏洞描述 Spring Security 是一套为基于Spring的应用程序提供说明性安全保护的安全框架。 在 Spring Security 受影响的版本中&#xff0c;由于 Spring Security 的授权规则会应用于整个应用程序上下文&#xff0c;当应用程序中包含多个servlet&#xff0c;并且其中一个为Dis…

测试必备工具之抓包神器 Charles 如何抓取 https 数据包?

前言 之前我们发过一篇文章讲解了Charles抓包工具的基本使用&#xff0c;有需要的小伙伴可以去看上一篇文章。 之前文章讲的数据包主要是http协议&#xff0c;大家可以看到数据包并直接显示具体详细的内容&#xff1a; 但是如果抓到的是https的报文&#xff0c;是没有办法直…

Redis DeskTop Manager 使用教程

简单粗暴的介绍一下&#xff0c;以及在工作中如何去使用工具管理我们的Redis&#xff0c;更加详细及深入的使用方法欢迎大家评论区讨论&#xff0c;我也和大家一起学习。 简介&#xff1a; Redis Desktop Manager (RDM) 是一个开源的图形化 Redis 数据库管理工具&#xff0c;…

erp什么意思,erp系统软件到底是干嘛用的?

企业资源计划 (ERP) 的定义 企业资源计划 (ERP) 是指组织用于管理日常业务活动的一套软件&#xff0c;这些活动包括会计、采购、项目管理、风险管理和合规性、供应链运营等等。完整的 ERP 套件还包括企业绩效管理软件&#xff0c;用于帮助企业针对财务结果制定计划和编制预算…

react-native项目安卓版本升级 compileSdkVersion 29->31

因为 react-native-ble-manager添加过程及碰到的问题 依赖 https://github.com/innoveit/react-native-ble-manager 参考&#xff1a;https://blog.csdn.net/withings/article/details/71378562 iOS 按react-native-ble-manager 文档在 【Info.plist】加了key之后能正常使用…

Vue学习Day1——小案例快速入门Vue指令

一、Vue简介 概念&#xff1a;是一套 构建用户界面 的 渐进式 框架 Vue2官网&#xff1a;https://v2.cn.vuejs.org/ 1、什么是渐进式 所谓渐进式就是循序渐进&#xff0c;不一定非得把Vue中的所有API都学完才能开发Vue&#xff0c;可以学一点开发一点 Vue的两种开发方式&…