static关键字在Java中的作用与用法
static关键字在Java中的作用与用法
大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!
在Java中,static关键字是一个非常重要的概念,用于定义静态成员、方法和内部类。它的使用可以显著影响类的设计和资源的管理。本文将详细介绍static关键字的各种应用场景,并通过具体代码示例进行讲解。
1. 静态变量
静态变量,也称为类变量,是与类本身相关联的,而不是与某个具体的对象相关联。静态变量在内存中只有一份拷贝,这样可以节省内存并允许所有对象共享这些数据。
package cn.juwatech.example;public class Counter {private static int count = 0;public Counter() {count++;}public static int getCount() {return count;}public static void main(String[] args) {Counter c1 = new Counter();Counter c2 = new Counter();System.out.println("Total Count: " + Counter.getCount());}
}
在上述示例中,count是一个静态变量,每当创建一个Counter对象时,count的值都会增加。通过Counter.getCount()方法可以获取到所有对象共享的count值。
2. 静态方法
静态方法属于类本身而不是实例化的对象,因此静态方法只能直接访问其他静态成员。静态方法可以在没有创建类的实例的情况下调用。
package cn.juwatech.example;public class MathUtils {public static int add(int a, int b) {return a + b;}public static void main(String[] args) {int result = MathUtils.add(5, 7);System.out.println("Addition Result: " + result);}
}
在这个例子中,add方法是一个静态方法,可以直接通过MathUtils.add(5, 7)调用,而无需实例化MathUtils类。
3. 静态代码块
静态代码块用于在类加载时初始化静态变量或执行一些一次性的操作。静态代码块在类加载时执行,且只执行一次。
package cn.juwatech.example;public class Database {static {System.out.println("Static block is executed.");// Initialize static resources}public static void main(String[] args) {// Static block will be executed when the class is first loaded}
}
在这个示例中,静态代码块在Database类第一次被加载时执行,可以用于初始化静态资源或执行其他静态操作。
4. 静态内部类
静态内部类是定义在另一个类内部的类,它与外部类的实例无关。静态内部类不能访问外部类的非静态成员。
package cn.juwatech.example;public class OuterClass {private static String staticMessage = "Hello from OuterClass";public static class StaticNestedClass {public void printMessage() {System.out.println(staticMessage);}}public static void main(String[] args) {OuterClass.StaticNestedClass nestedClass = new OuterClass.StaticNestedClass();nestedClass.printMessage();}
}
在这个示例中,StaticNestedClass是一个静态内部类,它可以访问外部类OuterClass的静态成员staticMessage。注意,静态内部类不能访问外部类的实例变量和方法。
5. 静态导入
静态导入可以让我们直接引用类中的静态成员,而不需要指定类名。这通常用于测试框架或工具类中。
package cn.juwatech.example;import static java.lang.Math.*;public class MathDemo {public static void main(String[] args) {double result = sqrt(25) + pow(2, 3);System.out.println("Result: " + result);}
}
在这个例子中,我们使用static import直接引用了java.lang.Math类中的静态方法sqrt和pow,使代码更加简洁。
6. 使用静态成员的场景
静态成员适用于以下情况:
- 当需要一个共享的常量或全局变量时。
- 当不依赖于对象实例的功能时,比如工具类的方法。
- 当需要类级别的初始化操作时,如配置类的静态块。
示例:静态资源管理
package cn.juwatech.example;public class ResourceManager {private static final String CONFIG_FILE = "config.properties";private static Properties properties = new Properties();static {try (InputStream input = ResourceManager.class.getClassLoader().getResourceAsStream(CONFIG_FILE)) {if (input != null) {properties.load(input);}} catch (IOException ex) {ex.printStackTrace();}}public static String getProperty(String key) {return properties.getProperty(key);}public static void main(String[] args) {String dbUrl = ResourceManager.getProperty("db.url");System.out.println("Database URL: " + dbUrl);}
}
在这个示例中,我们使用静态块初始化配置文件,所有ResourceManager的实例都共享相同的配置文件内容。
7. 注意事项
- 静态成员和线程安全:静态变量如果在多个线程中被访问,可能需要进行同步处理,以确保线程安全。
- 静态引用:避免静态成员持有对其他对象的强引用,尤其是在长生命周期的对象中,以防止内存泄漏。
本文著作权归聚娃科技微赚淘客系统开发者团队,转载请注明出处!
相关文章:
static关键字在Java中的作用与用法
static关键字在Java中的作用与用法 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在Java中,static关键字是一个非常重要的概念,用于定义静态成员、方法和内部类。它的使用可…...
50etf期权行权采用什么交割方式 ?
50ETF期权是欧式期,要到期日当天才能行权交制,其交割方式是实物交割买卖双方在到期行权日时需要准备一手交钱,一手收货或是一手交,一手收钱,如果持有期权到达到期日之前,投资者认为行权并不划算,…...
ts-node 报错 ERR_UNKNOWN_FILE_EXTENSION
问题 有个monorepo项目,在最外层一次性打包 3 个项目的脚本已经成功实现,如下: "build:test": "cross-env NODE_ENVtest vite build --mode test && esno ./build/script/postBuild.ts", "build:prod"…...
水域救援设备,保护水域安全_鼎跃安全
季作为一年中最炎热的季节,不仅带来了难耐的高温,也悄然间加剧了水域安全问题的严峻性。这一时期,正值学生群体享受悠长暑假的宝贵时光,他们往往倾向于寻找清凉之地以解酷暑,水域因此成为了不少学生的首选之地。然而&a…...
openmetadata本地编译环境搭建
openmetadata本地编译环境搭建 本地环境: Docker 20 or higher Java JDK 17 Antlr 4.9.2 - sudo make install_antlr_cli JQ - brew install jq (osx) apt-get install jq (Ubuntu) Maven 3.5.x or higher - (with Java JDK 11) Python 3.7, 3.8 or 3.9 Node…...
LeetCode Hard|【25. K 个一组翻转链表】
力扣题目链接 首先我们考虑一种很直观的思路: 遍历链表,统计链表长度遍历链表,进行翻转 对于每一组长度为 K 的节点,进行翻转如果剩余节点不足 K 个,则不进行翻转 连接翻转后的子链表 这里我们用的就是只用 O(1) 额外内…...
python爬虫预备知识三-多进程
python实现多进程的方法:fork、multiprocessing模块创建多进程。 os.fork方法 os.fork方法只适合于unix/linux系统,不支持windows系统。 fork方法调用一次会返回两次,原因在于操作系统将当前进程(父进程)复制出一份…...
【zlm】针对单个设备的音频的编码的设置
目录 结论 原理 测试 结论 为了防止zlm音频配置里设置成opus优先,在国标推流时,调用push时,默认加上codecpcma 如下 https://10.60.100.196:10443/index/api/webrtc?applive&streamtest&typepush&codecpcma 原理 测试 …...
文案人的梦工场,网易入职指南!
网易云对于咱们一些有点文艺的文案策划来说,简直就是梦中情司。 在这里工作锻炼机会很多,也很开拓眼界,能获得相当于在别处3倍能力的成长速度,福利待遇也是很好的。 要进入网易云音乐做文案策划,你可以按照以下步骤进…...
做一个能和你互动玩耍的智能机器人之七-接入对话和大模型
接入科大迅飞的语音识别: private void printResult(RecognizerResult results) {String text JsonParser2.parseIatResult(results.getResultString());String sn null;// 读取json结果中的sn字段try {JSONObject resultJson new JSONObject(results.getResult…...
阿里巴巴商家联系方式采集软件使用教程
以下是一个批量访问阿里巴巴商家店铺的Python代码示例: import requestsdef visit_shop(shop_url):try:response requests.get(shop_url)if response.status_code 200:print(f"成功访问店铺:{shop_url}")else:print(f"访问店铺失败&am…...
Golang | Leetcode Golang题解之第326题3的幂
题目: 题解: func isPowerOfThree(n int) bool {return n > 0 && 1162261467%n 0 }...
人大金仓(Kingbase)数据库高阶函数详解
人大金仓(Kingbase)数据库高阶函数详解 人大金仓(Kingbase)数据库是一款基于 PostgreSQL 的国产关系型数据库(PostgreSQL 高阶函数详解:全面深入的功能与实用示例 ),提供了丰富的高阶函数,以支…...
云原生真机实验
基于Proxmox VE构建中小企业云计算平台 首先Proxmox VE是什么?能用来做什么? Proxmox VE是一个完整的企业虚拟化开源平台。借助内置的 Web 界面,可以在单个解决方案上轻松管理 VM(开虚拟机的) 和容器、软件定义的存储和网络、高可用性群集以…...
【电子电路学习笔记】——模电笔记
关于专栏:本专栏用于分享学习电子电路过程中记录的笔记。模电部分使用的教材是高等教育出版社,华成英主编的《模拟电子技术基础(第六版)》(其他版本的内容差不多,建议使用最新版教材)࿱…...
部署伪分布式 Hadoop集群
部署伪分布式 Hadoop集群 一、JDK安装配置1.1 下载JDK1.2 上传解压1.3 java环境配置 二、伪分布式 Hadoop 安装配置2.1 Hadoop 下载2.2 上传解压2.3 Hadoop 文件目录介绍2.4 Hadoop 配置2.4.1 修改 core-site.xml 配置文件2.4.2 修改 hdfs-site.xml 配置文件2.4.3 修改 hadoop-…...
十九、虚拟机VMware Workstation(CentOSDebian)的安装
目录 🌻🌻 一、安装 VMware Workstation1.1 安装 VMware Workstation1.2 虚拟机上安装 CentOS1.3 虚拟机安装 Debian 二、配置Debian方便第三方工具远程连接2.1 配置debian2.2 安装远程SSH工具并连接 一、安装 VMware Workstation 官网下载 本地资源库…...
理解Android framework之AOSP:从内核到应用层
一、AOSP Android framework确保设备的各个部件和程序顺利协同工作。对于想要全面了解 Android 设备内部工作原理、开发高质量应用、优化设备性能以及充分利用 Android 生态系统潜力的人来说,了解 Android 框架也是必不可少的。它是连接用户、开发者和 Android 平台…...
杂谈c语言——3.内存对齐
先看两个例子: typedef struct S {int a;double b;char c; }S;typedef struct B {int a;char b;double c; }B;int main() {printf("S : %d\n", sizeof(S));printf("B : %d\n", sizeof(B));return 0; } 结果为: S:24; B:16ÿ…...
瑞芯微Android设备指定应用开启性能模式
本文档主要针对特定应用(如 安兔兔)如何进行加速及性能的提升做相关说明。 快速开启方法 开启与关闭 在 device/rockchip/rk3xxx/下配置文件:package_performance.xml,在其中的节点中加入需要使用性能模式的包名:(…...
Untrunc视频修复工具:让损坏的MP4文件重获新生
Untrunc视频修复工具:让损坏的MP4文件重获新生 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 当你熬夜剪辑完成…...
AI 编程盛行的时代,为什么 “『DC- WFW』” 仍然具有必要性?沼
这,是一个采用C精灵库编写的程序,它画了一幅漂亮的图形: 复制代码 #include "sprites.h" //包含C精灵库 Sprite turtle; //建立角色叫turtle void draw(int d){for(int i0;i<5;i)turtle.fd(d).left(72); } int main(){ …...
小白友好:Local SDXL-Turbo极简使用教程,开箱即用无需复杂配置
小白友好:Local SDXL-Turbo极简使用教程,开箱即用无需复杂配置 1. 什么是Local SDXL-Turbo? Local SDXL-Turbo是一款革命性的AI绘画工具,它让"打字即出图"成为现实。不同于传统AI绘画需要等待几秒甚至几分钟ÿ…...
Open Images:大规模多标签图像分类与目标检测数据集的技术实现
Open Images:大规模多标签图像分类与目标检测数据集的技术实现 【免费下载链接】dataset The Open Images dataset 项目地址: https://gitcode.com/gh_mirrors/dat/dataset Open Images是由Google构建的大规模视觉数据集,为计算机视觉研究提供了包…...
OpenTAP硬件集成测试优势解析
OpenTAP 之所以在硬件和系统集成测试领域表现出色,主要得益于其独特的设计理念、灵活的架构以及强大的社区生态支持。以下将从核心架构、技术优势、应用场景和具体实施案例等多个维度进行详细阐述。 一、 核心架构与设计理念 OpenTAP 基于 .NET 平台构建ÿ…...
打字不如说话,说话不如截图——AI 代码助手的多模态输入实践不
整体排查思路 我们的目标是验证以下三个环节是否正常: 登录成功时:服务器是否正确生成了Session并返回了包含正确 JSESSIONID的Cookie给浏览器。 浏览器端:浏览器是否成功接收并存储了该Cookie。 后续请求:浏览器在执行查询等操作…...
收藏!程序员转型AI必看:手把手教你构建百万级文档RAG系统
本文聚焦于企业级大模型应用中的RAG技术,针对10万级文档规模,探讨了如何构建一个高效、稳定且可扩展的RAG系统。文章从RAG的基本原理出发,分析了检索慢、召回率低和部署复杂三大痛点,并提出了相应的优化策略,包括文档预…...
如何用DoubleQoLMod在30分钟内让你的工业帝国效率翻倍?
如何用DoubleQoLMod在30分钟内让你的工业帝国效率翻倍? 【免费下载链接】DoubleQoLMod-zh 项目地址: https://gitcode.com/gh_mirrors/do/DoubleQoLMod-zh 想象一下,你的工厂正在全速运转,但资源采集却像蜗牛一样缓慢;你的…...
别再被CUDA版本搞晕了!手把手教你为MMCV和PyTorch选对CUDA Toolkit(附版本对照表)
深度学习环境配置终极指南:CUDA、PyTorch与MMCV版本匹配全解析 当你第一次尝试搭建深度学习开发环境时,面对各种CUDA版本、PyTorch版本和MMCV版本的要求,是否感到一头雾水?特别是当你的GPU驱动已经更新到最新版,而项目…...
颠覆式OpenCore自动化配置:5分钟完成黑苹果EFI构建的终极解决方案
颠覆式OpenCore自动化配置:5分钟完成黑苹果EFI构建的终极解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore-Simplify是一款专…...
