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

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;}
}

可以发现静态代码块只执行了一次

实例代码块:
格式:{}

特点:每次创建对象时,执行实例代码块,并在构造器前执行

作用:和构造器一样,都是用来完成对象的初始化的。例如:对实例对象进行初始化赋值

单例设计模式:

确保类只有以一个对象;

写法:

  1. 把类的构造器私有化
  2. 定义一个类变量记住类的一个对象
  3. 定义一个类方法,返回对象

创建一个类:

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*/}
}

上面这个单例设计模式叫饿汉式单例:返回对象时,对象已经创建好

懒汉式单例设计模式:
写法:

  1. 把类的构造器私有化
  2. 定义一个类变量,用于存储对象
  3. 提供一个类方法,保证返回的是同一个对象 
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和单例模式

同一个类中&#xff0c;访问其类成员&#xff0c;可以省略类名不写 static&#xff1a;叫静态&#xff0c;可以修饰成员变量&#xff0c;成员方法。 成员变量按照有无static修饰&#xff0c;分为两种&#xff1a; 类变量&#xff1a;有static修饰&#xff0c;属于类&#xf…...

RabbitMQ相关总结

Broker 异步调用中用Broker进行事件订阅和调用&#xff0c;完成解耦 没有强依赖&#xff0c;不用担心级联失败 流量削峰 MQ 的下载 1.可以使用命令拉取镜像 docker pull rabbitmq:3-management 2.也可以直接去官网下载tar包&#xff0c;然后上传到虚拟机上面 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 主…...

第十五届蓝桥杯第三期模拟赛第十题 ← 上楼梯

【问题描述】 小蓝要上一个楼梯&#xff0c;楼梯共有 n 级台阶&#xff08;即小蓝总共要走 n 级&#xff09;。小蓝每一步可以走 a 级、b 级或 c 级台阶。 请问小蓝总共有多少种方案能正好走到楼梯顶端&#xff1f;【输入格式】 输入的第一行包含一个整数 n 。 第二行包含三个整…...

第四题:星期一

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 整个 20 世纪&#xff08;1901 年 1 月 1 日至 2000 年 12 月 31 日之间&#xff09;&#xff0c;一共有多少个星期一&#xff1f;(不要告诉我你不知道今天是星期几…...

Mamba: Linear-Time Sequence Modeling with Selective State Spaces(论文笔记)

What can I say? 2024年我还能说什么&#xff1f; Mamba out! 曼巴出来了&#xff01; 原文链接&#xff1a; [2312.00752] Mamba: Linear-Time Sequence Modeling with Selective State Spaces (arxiv.org) 原文笔记&#xff1a; What&#xff1a; Mamba: Linear-Time …...

2024蓝桥杯每日一题(区间DP)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;游戏 试题二&#xff1a;石子合并 试题三&#xff1a;密码脱落 试题四&#xff1a;能量项链 试题一&#xff1a;游戏 【题目描述】 玩家一和玩家二共同玩一个小游戏。给定一个包含 N 个…...

LeetCode-2952. 需要添加的硬币的最小数量【贪心 数组 排序】

LeetCode-2952. 需要添加的硬币的最小数量【贪心 数组 排序】 题目描述&#xff1a;解题思路一&#xff1a;看提示主要是用贪心和排序。那我们肯定是首先对coins排序。然后依次遍历coins[i]&#xff0c;获取当前可以获取金额范围&#xff0c;和判断是否加入新硬币。判断规则如下…...

新书速递——《可解释AI实战(PyTorch版)》

本书旨在帮助你实施最新的可解释AI技术&#xff0c;以构建公平且可解释的AI系统。可解释AI是当今AI研究中的热门话题&#xff0c;但只有少数资源和指南涵盖了所有重要技术&#xff0c;这些技术对实践者来说非常有价值。本书旨在填补这一空白。 本书读者对象 本书既适合那些有兴…...

国产数据库中统计信息自动更新机制

数据库中统计信息描述的数据库中表和索引的大小数以及数据分布状况&#xff0c;统计信息的准确性对优化器选择执行计划时具有重要的参考意义。本文简要整理了下传统数据库和国产数据库中统计信息的自动更新机制&#xff0c;以加深了解。 1、数据库统计信息介绍 优化器是数据库…...

【C++】入门C++(中)

好的&#xff0c;我们继续&#xff0c;这是 C专栏的第二篇博客&#xff0c;还没读过上一篇博客可以进入我创建的专栏阅读 入门C&#xff08;上&#xff09;再回来哦~ 下面我们要讲的第一个概念就是函数重载 函数重载 1. 函数重载概念 什么是函数重载&#xff1f; 简单来说…...

javaIO

file类 一个File类的对象可以表示一个具体的文件或目录 mkdir 创建单级文件夹 mkdirs 创建多级文件夹 delete 删除一个文件夹时&#xff0c;文件夹里面必须是空的 listfiles 将文件夹的子集放到一个file类型的数组中 输入及输出的概念 输入input 输出output 把jav…...

睿尔曼超轻量仿人机械臂之复合机器人底盘介绍及接口调用

机器人移动平台是一个包含完整成熟的感知、认知和定位导航能力的轮式机器人底盘产品级平台&#xff0c;产品致力于为各行业细分市场的商用轮式服务机器人提供一站式移动机器人解决方案&#xff0c;让合作伙伴专注在核心业务/人机交互的实现。以下是我司产品双臂机器人以及复合升…...

用JSch实现远程传输文件并打包成jar

本文将简单介绍一下 JSch 这个Java的第三方库的一个简单用法&#xff0c;并以此为实例&#xff0c;讲解 IntelliJ 中打包成 jar 包的2种方式。 实现目标 我们的目标是&#xff0c;做出一个jar包&#xff0c;它能够实现类似于 scp 命令的远程传输文件的功能。用法如下&#xf…...

2023年第十四届蓝桥杯大赛软件类省赛C/C++研究生组真题(代码完整题解)

C题-翻转⭐ 标签:贪心 简述:如果 S 中存在子串 101 或者 010,就可以将其分别变为 111 和 000,操作可以无限重复。最少翻转多少次可以把 S 变成和 T 一样。 链接: 翻转 思路:要求步骤最少->S每个位置最多修改一次->从头开始遍历不匹配就翻转->翻转不了就-1 …...

力扣刷题Days28-第二题-11.盛水最多的容器(js)

目录 1&#xff0c;题目 2&#xff0c;代码 3&#xff0c;学习与总结 3.1思路回顾 1&#xff0c;如何遍历 2&#xff0c;算法流程 3.2剖析问题 1&#xff0c;题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, h…...

文生图大模型三部曲:DDPM、LDM、SD 详细讲解!

1、引言 跨模态大模型是指能够在不同感官模态(如视觉、语言、音频等)之间进行信息转换的大规模语言模型。当前图文跨模态大模型主要有&#xff1a; 文生图大模型&#xff1a;如 Stable Diffusion系列、DALL-E系列、Imagen等 图文匹配大模型&#xff1a;如CLIP、Chinese CLIP、…...

算法学习——LeetCode力扣动态规划篇10(583. 两个字符串的删除操作、72. 编辑距离、647. 回文子串、516. 最长回文子序列)

算法学习——LeetCode力扣动态规划篇10 583. 两个字符串的删除操作 583. 两个字符串的删除操作 - 力扣&#xff08;LeetCode&#xff09; 描述 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个…...

TASKPROMPTER

baseline模型的预训练权重就有1.6G! 多吓人呐&#xff0c;当时我就暂停下载了&#xff0c;不建议复现...

C之易错注意点转义字符,sizeof,scanf,printf

目录 前言 一&#xff1a;转义字符 1.转义字符顾名思义就是转换原来意思的字符 2.常见的转义字符 1.特殊\b 2. 特殊\ddd和\xdd 3.转义字符常错点----计算字符串长度 注意 &#xff1a; 如果出现\890,\921这些的不是属于\ddd类型的&#xff0c;&#xff0c;不是一个字符…...

如何5分钟构建专业级黑苹果EFI?OpCore Simplify让复杂配置一键搞定

如何5分钟构建专业级黑苹果EFI&#xff1f;OpCore Simplify让复杂配置一键搞定 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 副标题&#xff1a;告别…...

【JavaWeb开发】从零构建前后端交互实战指南

1. JavaWeb前后端交互基础入门 第一次接触JavaWeb开发时&#xff0c;最让我困惑的就是前后端如何传递数据。记得刚开始做项目时&#xff0c;我傻乎乎地用字符串拼接HTML代码返回给前端&#xff0c;结果遇到中文乱码问题折腾了一整天。后来才发现&#xff0c;现代JavaWeb开发早已…...

WSABuilds系统调用:Windows与Android内核交互机制解析

WSABuilds系统调用&#xff1a;Windows与Android内核交互机制解析 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root sol…...

如何突破Windows权限壁垒?系统管理专家的秘密武器

如何突破Windows权限壁垒&#xff1f;系统管理专家的秘密武器 【免费下载链接】NSudo [Deprecated, work in progress alternative: https://github.com/M2Team/NanaRun] Series of System Administration Tools 项目地址: https://gitcode.com/gh_mirrors/ns/NSudo 在W…...

Matlab中的QRBiGRU分位数回归双向门控循环单元模型:多图输出与多指标评估的时间序列区间预测

Matlab实现基于QRBiGRU分位数回归双向门控循环单元的时间序列区间预测模型&#xff1a; 1.Matlab实现基于QRBiGRU分位数回归双向门控循环单元的时间序列区间预测模型 2.多图输出、多指标输出(MAE、RMSE、MSE、R2)&#xff0c;多输入单输出&#xff0c;含不同置信区间图、概率密…...

流注放电,COMSOL放电仿真,等离子体仿真,棒板电极,空气流注,流注放电,需要拿去参考

流注放电&#xff0c;COMSOL放电仿真&#xff0c;等离子体仿真&#xff0c;棒板电极&#xff0c;空气流注&#xff0c;流注放电&#xff0c;需要拿去参考。流注放电这玩意儿在高压设备里常见得跟小区门口的便利店似的。实验室里整了个棒板电极结构&#xff0c;空气里突然窜出条…...

STM32F103C8T6 DHT11温湿度监测系统 HAL库 CubeMX实战(避坑指南)

1. 项目背景与硬件选型 温湿度监测是物联网领域最基础也最实用的功能之一。我最近用STM32F103C8T6和DHT11搭建了一个环境监测节点&#xff0c;整个过程踩了不少坑&#xff0c;也积累了一些实战经验。这个方案特别适合需要低成本、快速上手的场景&#xff0c;比如智能家居、农业…...

手把手教你用51单片机实现蓝牙+WiFi双模控制智能小车(附OLED显示速度)

从零构建51单片机智能小车&#xff1a;双模无线控制与速度显示实战指南 引言 想象一下&#xff0c;当你坐在沙发上&#xff0c;用手机就能遥控一台自制的小车在房间里自由穿梭&#xff0c;同时还能实时查看它的行驶速度——这种极客般的体验其实并不遥远。基于51单片机的智能…...

寻音捉影·侠客行多场景落地:覆盖会议/媒体/司法/金融/教育五大垂直领域

寻音捉影侠客行多场景落地&#xff1a;覆盖会议/媒体/司法/金融/教育五大垂直领域 1. 产品核心功能解析 寻音捉影侠客行是一款基于先进语音识别技术的音频关键词检索工具&#xff0c;它能够像江湖中的隐士高手一样&#xff0c;在浩瀚的音频海洋中精准定位特定关键词。这款工具…...

效率倍增:用快马生成jdk一键配置脚本与docker环境模板

效率倍增&#xff1a;用快马生成JDK一键配置脚本与Docker环境模板 每次新换电脑或者重装系统&#xff0c;最头疼的就是重新配置开发环境。特别是Java开发&#xff0c;光是下载JDK、配置环境变量就得折腾半天。最近发现用InsCode(快马)平台可以快速生成自动化脚本&#xff0c;把…...