java中的static和单例模式
同一个类中,访问其类成员,可以省略类名不写
static:叫静态,可以修饰成员变量,成员方法。
成员变量按照有无static修饰,分为两种:
类变量:有static修饰,属于类;在计算机中只有一份,会被类的所有对象共享;
类名.类变量
实例变量(对象的变量):无static修饰,属于每个对象,每个对象都会一份;
实例变量只能通过对象访问
创建一个学生类:
public class student {static String name;//类变量int age;//实例变量(对象变量)
}
进行操作:
public class test1 {public static void main(String[] args) {//1:类变量的用法//类名.类变量student.name="hhh";//对象名.类变量student s1=new student();s1.name="xxx";student s2=new student();s2.name="aaa";类变量在计算机中只有一份System.out.println(s1.name);//aaaSystem.out.println(student.name);//aaa}}
类变量的应用场景:
在开发中,如果某个数据只需要一份,且希望能够被共享,则该数据可以定义类变量记住。
成员方法:
类方法:有static修饰的成员方法,属于类。
实例方法:无static修饰的成员方法,属于对象。
类方法的使用场景:
用来做工具类。
工具类就是一些类方法,每个方法都是用来完成一个功能的。
这是我写了一个生成任意数验证码的工具类:
public class myutil {private myutil() {}//别人不能创建对象public static String createCode(int n){String tmp="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWSYZ1234567890";String code="";Random ra=new Random();for (int i = 0; i < n; i++) {int index=ra.nextInt(tmp.length());code+=tmp.charAt(index);}return code;}
}
类方法不用生成对象占用内存。
static的注意事项:
1 类方法可以直接访问类成员(变量和方法),不可以直接访问实例成员;
2 实例方法可以直接访问类成员,也可以直接访问实例成员;
3 类方法中不可以出现this关键字,但是实例方法中可以出现this;
代码块:
静态代码块:
格式:static {}
特点:类加载会自动执行,由于类只会加载一次,所以静态代码块只会加载一次1;
作用:完成类的初始化,例如:对类变量的初始化赋值
使用:
定义了一个学生类:
public class student {public static int number=10;static//静态代码块{System.out.println("静态代码块执行");}
}
使用:
public class test {public static void main(String[] args) {System.out.println(student.number);/*静态代码块执行10*/System.out.println(student.number);//10;}
}
可以发现静态代码块只执行了一次
实例代码块:
格式:{}
特点:每次创建对象时,执行实例代码块,并在构造器前执行
作用:和构造器一样,都是用来完成对象的初始化的。例如:对实例对象进行初始化赋值
单例设计模式:
确保类只有以一个对象;
写法:
- 把类的构造器私有化
- 定义一个类变量记住类的一个对象
- 定义一个类方法,返回对象
创建一个类:
public class sin {
//1:私有化无参构造器private sin(){}
//2:定义一个类变量记住类的一个对象private static sin a=new sin();
//定义一个类方法,返回对象public static sin getsin(){return a;}
}
操作:
public class test {public static void main(String[] args) {//只能通过sin.getsin获取对象,且此对象是static静态的,只有一份,所以是单例模式//sin a=new sin()//error:'sin()' has private access//可见不能通过无参构造器创建对象sin a1 = sin.getsin();sin a2 = sin.getsin();System.out.println(a1);System.out.println(a2);//结果:/*com.he.static3.sin@2f4d3709com.he.static3.sin@2f4d3709*/}
}
上面这个单例设计模式叫饿汉式单例:返回对象时,对象已经创建好
懒汉式单例设计模式:
写法:
- 把类的构造器私有化
- 定义一个类变量,用于存储对象
- 提供一个类方法,保证返回的是同一个对象
public class lan {private lan(){}
//2定义一个类变量,先不初始化,用于存储对象。private static lan b;
//3提供一个类方法,保证返回的是同一个对象 public static lan getlan(){if(b==null){b=new lan();}return b;}
}
相关文章:
java中的static和单例模式
同一个类中,访问其类成员,可以省略类名不写 static:叫静态,可以修饰成员变量,成员方法。 成员变量按照有无static修饰,分为两种: 类变量:有static修饰,属于类…...
RabbitMQ相关总结
Broker 异步调用中用Broker进行事件订阅和调用,完成解耦 没有强依赖,不用担心级联失败 流量削峰 MQ 的下载 1.可以使用命令拉取镜像 docker pull rabbitmq:3-management 2.也可以直接去官网下载tar包,然后上传到虚拟机上面 spring AMQP…...
RAFT: Adapting Language Model to Domain Specific RAG
今天来介绍下伯克利大学3.15日新发的一篇paper,RAFT: Adapting Language Model to Domain Specific RAG 主要研究了如何构造训练数据来微调你的LLM,从而在LLM在垂直领域的RAG中表现更好。并且开源了代码:GitHub - ShishirPatil/gorilla: Gorilla: An API store for LLMs 主…...
第十五届蓝桥杯第三期模拟赛第十题 ← 上楼梯
【问题描述】 小蓝要上一个楼梯,楼梯共有 n 级台阶(即小蓝总共要走 n 级)。小蓝每一步可以走 a 级、b 级或 c 级台阶。 请问小蓝总共有多少种方案能正好走到楼梯顶端?【输入格式】 输入的第一行包含一个整数 n 。 第二行包含三个整…...
第四题:星期一
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 整个 20 世纪(1901 年 1 月 1 日至 2000 年 12 月 31 日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几…...
Mamba: Linear-Time Sequence Modeling with Selective State Spaces(论文笔记)
What can I say? 2024年我还能说什么? Mamba out! 曼巴出来了! 原文链接: [2312.00752] Mamba: Linear-Time Sequence Modeling with Selective State Spaces (arxiv.org) 原文笔记: What: Mamba: Linear-Time …...
2024蓝桥杯每日一题(区间DP)
备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一:游戏 试题二:石子合并 试题三:密码脱落 试题四:能量项链 试题一:游戏 【题目描述】 玩家一和玩家二共同玩一个小游戏。给定一个包含 N 个…...
LeetCode-2952. 需要添加的硬币的最小数量【贪心 数组 排序】
LeetCode-2952. 需要添加的硬币的最小数量【贪心 数组 排序】 题目描述:解题思路一:看提示主要是用贪心和排序。那我们肯定是首先对coins排序。然后依次遍历coins[i],获取当前可以获取金额范围,和判断是否加入新硬币。判断规则如下…...
新书速递——《可解释AI实战(PyTorch版)》
本书旨在帮助你实施最新的可解释AI技术,以构建公平且可解释的AI系统。可解释AI是当今AI研究中的热门话题,但只有少数资源和指南涵盖了所有重要技术,这些技术对实践者来说非常有价值。本书旨在填补这一空白。 本书读者对象 本书既适合那些有兴…...
国产数据库中统计信息自动更新机制
数据库中统计信息描述的数据库中表和索引的大小数以及数据分布状况,统计信息的准确性对优化器选择执行计划时具有重要的参考意义。本文简要整理了下传统数据库和国产数据库中统计信息的自动更新机制,以加深了解。 1、数据库统计信息介绍 优化器是数据库…...
【C++】入门C++(中)
好的,我们继续,这是 C专栏的第二篇博客,还没读过上一篇博客可以进入我创建的专栏阅读 入门C(上)再回来哦~ 下面我们要讲的第一个概念就是函数重载 函数重载 1. 函数重载概念 什么是函数重载? 简单来说…...
javaIO
file类 一个File类的对象可以表示一个具体的文件或目录 mkdir 创建单级文件夹 mkdirs 创建多级文件夹 delete 删除一个文件夹时,文件夹里面必须是空的 listfiles 将文件夹的子集放到一个file类型的数组中 输入及输出的概念 输入input 输出output 把jav…...
睿尔曼超轻量仿人机械臂之复合机器人底盘介绍及接口调用
机器人移动平台是一个包含完整成熟的感知、认知和定位导航能力的轮式机器人底盘产品级平台,产品致力于为各行业细分市场的商用轮式服务机器人提供一站式移动机器人解决方案,让合作伙伴专注在核心业务/人机交互的实现。以下是我司产品双臂机器人以及复合升…...
用JSch实现远程传输文件并打包成jar
本文将简单介绍一下 JSch 这个Java的第三方库的一个简单用法,并以此为实例,讲解 IntelliJ 中打包成 jar 包的2种方式。 实现目标 我们的目标是,做出一个jar包,它能够实现类似于 scp 命令的远程传输文件的功能。用法如下…...
2023年第十四届蓝桥杯大赛软件类省赛C/C++研究生组真题(代码完整题解)
C题-翻转⭐ 标签:贪心 简述:如果 S 中存在子串 101 或者 010,就可以将其分别变为 111 和 000,操作可以无限重复。最少翻转多少次可以把 S 变成和 T 一样。 链接: 翻转 思路:要求步骤最少->S每个位置最多修改一次->从头开始遍历不匹配就翻转->翻转不了就-1 …...
力扣刷题Days28-第二题-11.盛水最多的容器(js)
目录 1,题目 2,代码 3,学习与总结 3.1思路回顾 1,如何遍历 2,算法流程 3.2剖析问题 1,题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, h…...
文生图大模型三部曲:DDPM、LDM、SD 详细讲解!
1、引言 跨模态大模型是指能够在不同感官模态(如视觉、语言、音频等)之间进行信息转换的大规模语言模型。当前图文跨模态大模型主要有: 文生图大模型:如 Stable Diffusion系列、DALL-E系列、Imagen等 图文匹配大模型:如CLIP、Chinese CLIP、…...
算法学习——LeetCode力扣动态规划篇10(583. 两个字符串的删除操作、72. 编辑距离、647. 回文子串、516. 最长回文子序列)
算法学习——LeetCode力扣动态规划篇10 583. 两个字符串的删除操作 583. 两个字符串的删除操作 - 力扣(LeetCode) 描述 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个…...
TASKPROMPTER
baseline模型的预训练权重就有1.6G! 多吓人呐,当时我就暂停下载了,不建议复现...
C之易错注意点转义字符,sizeof,scanf,printf
目录 前言 一:转义字符 1.转义字符顾名思义就是转换原来意思的字符 2.常见的转义字符 1.特殊\b 2. 特殊\ddd和\xdd 3.转义字符常错点----计算字符串长度 注意 : 如果出现\890,\921这些的不是属于\ddd类型的,,不是一个字符…...
为什么你的Ziatype输出总是发灰?3分钟定位CMYK→RGB色域坍缩根源并一键修复
更多请点击: https://intelliparadigm.com 第一章:Ziatype印相发灰现象的直观诊断与认知重构 Ziatype是一种基于铁-银工艺的古典摄影印相法,其典型特征是高对比度、深沉黑位与细腻中间调。然而在实际操作中,“发灰”(…...
利用ODX实现整车诊断数据库管理
一:背景与挑战| 背景:在全球汽车行业快速发展的背景下,对车辆诊断技术的要求也在不断提升。ODX(Open Diagnostic data eXchange)作为行业标准的诊断数据库,已被各大汽车制造商广泛采用,并贯穿于ECU的整个生…...
开关电源EMC设计:从原理到实践的关键技术
1. 开关电源EMC设计基础 开关电源因其高效率和小型化优势,在现代电子设备中广泛应用。然而,高频开关动作带来的电磁干扰(EMI)问题不容忽视。作为一名电源工程师,我经常需要面对各种EMC挑战。记得有一次,我们团队设计的工业电源模块…...
Docker 部署 XiuXianGame 文字修仙游戏:极空间 NAS 上随时挂机刷资源
前言 挂机刷资源,躺平修成仙。 这类文字修仙游戏,说白了就是佛系养成为主,不用时刻盯着,挂着就行。但问题是——大多数要么得在本地电脑跑,要么依赖第三方平台,体验受限。把这套东西跑在自己的 NAS 上&am…...
Git Conflict Resolution
1. 这篇文章解决什么问题? Git 冲突不是异常情况,而是多人协作和分支开发里的正常现象。 常见问题包括: 1. 为什么会产生冲突? 2. 冲突文件里的 <<<<<<<、、>>>>>>> 是什么?…...
大厂HR坦言:这3种“计算机巨坑”,90%的学生都在踩!如何逆袭成高薪抢手人?
文章指出,计算机专业就业难,但优秀人才依然稀缺。多数学生因方向错误导致努力白费。常见弯路包括:过度刷题缺乏项目、技术广博但不精、忽视GPA与实习。文章强调,学生需明确用人单位需求,重视项目与实习,夯实…...
谷歌seo如何发布外链? 推荐3个外贸SOHO全自动工具
身处外贸圈的人都明白,空有一身好产品,网站在谷歌搜不到也是白搭。现在的算法比五年前聪明太多,靠那种五块钱一千条的群发软件纯属给自己的域名“投毒”。我在操作几十个独立站的过程中发现,外链的数量早就不吃香了,现…...
实战指南:如何通过Vosk API实现95%+准确率的离线语音识别系统
实战指南:如何通过Vosk API实现95%准确率的离线语音识别系统 【免费下载链接】vosk-api Offline speech recognition API for Android, iOS, Raspberry Pi and servers with Python, Java, C# and Node 项目地址: https://gitcode.com/GitHub_Trending/vo/vosk-ap…...
微创式电子设备设计:从自动化到自主化的智能革命
1. 项目概述:从“工具”到“魔法”的隐形革命十几年前,我在《EE Times》上读到一篇由西蒙巴克(Simon Barker)撰写的文章,标题是一个直击灵魂的提问:“微创式电子设备在哪里?” 这个问题像一颗种…...
STM32实战:用HAL库搞定RS485 Modbus液压传感器数据采集(附自动收发电路避坑)
STM32实战:HAL库驱动RS485 Modbus液压传感器全流程解析 液压系统压力监测的稳定性往往取决于传感器数据采集的可靠性。在工业现场,RS485总线搭配Modbus RTU协议已成为液压传感器数据传输的黄金标准。本文将深入探讨基于STM32 HAL库的完整解决方案&#x…...
