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

11. 为什么要用static关键字

11. 为什么要用static关键字

static:

  • 通常来说:在new一个对象的时候,数据存储空间才会被分配,方法才能被外界使用。但是有时只想单独分配一个存储空间,不考虑需要创建对象或不创建对象,在没有对象的情况下也想调用方法。static关键字就满足了我们的需求

  • 共享数据,节省内存

    • 当多个对象需要共享一份数据时,可以避免为每个对象单独开辟一个数据存储空间,节省内存

      • class Employee {private static int count = 0; // 所有 Employee 实例共享这个变量private String name;public Employee(String name) {this.name = name;count++; // 每创建一个实例,count 自增}public static int getCount() {return count;}
        }public class Main {public static void main(String[] args) {Employee e1 = new Employee("Alice");Employee e2 = new Employee("Bob");System.out.println("当前员工数: " + Employee.getCount()); // 输出 2}
        }
        
  • 不需要实例化,可以直接使用

    • class MathUtils {public static int add(int a, int b) {return a + b;}
      }public class Main {public static void main(String[] args) {int result = MathUtils.add(3, 5); // 直接通过类名调用静态方法System.out.println("3 + 5 = " + result); // 输出 8}
      }
      
  • 资源初始化 (类加载时执行)

    • class Database {private static Connection conn;static {try {conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");System.out.println("数据库连接已建立");} catch (SQLException e) {e.printStackTrace();}}public static Connection getConnection() {return conn;}
      }public class Main {public static void main(String[] args) {Connection conn = Database.getConnection(); // 第一次调用时会触发静态代码块}
      }
      
http://www.dtcms.com/a/323453.html

相关文章:

  • 香橙派 RK3588 部署千问大模型 Qwen2-VL-2B 多轮交互式对话
  • 【工具】Python多环境管理
  • ubuntu安装ollama流程
  • Day 8: 深度学习综合实战与进阶技术 - 从优化到部署的完整流程
  • Java+Vue打造的采购招投标一体化管理系统,涵盖招标、投标、开标、评标全流程,功能完备,附完整可二次开发的源码
  • 数据结构day06
  • 102-基于Spark的招聘数据预测分析推荐系统
  • 物质和暗物质形成机制
  • 【排序算法】④堆排序
  • 工具箱许愿墙项目发布
  • AI_RAG
  • 复现论文关于3-RPRU并联机器人运动学建模与参数优化设计
  • 机器翻译实战:使用Gensim训练中英文词向量模型及可视化
  • Android之gradle和gradlew命令编译项目总结
  • 消息队列核心功能和消息队列做异步的优势
  • C++:继承[下篇]
  • Vue 使用element plus组件库提示doesn‘t work properly without JavaScript enabled
  • [ MySQL 数据库 ] 多表关联查询
  • STM32HAL库 -- 10.DMA外设实战(UART串口+DMA读取传感器数据)
  • Tangram官网教程
  • Qt Graphics View框架概述
  • 夺宝奇兵 古老之圈 送修改器(The Great Circle)免安装中文版
  • openvela之STM32开发板部署
  • 力扣(轮转数组)
  • 智慧水务漏检率↓75%:陌讯水下视觉监测方案实战解析
  • 北京天津唐山廊坊沧州打捞日记
  • Nvidia 开源 KO 驱动 开发入门
  • 车流高峰漏检率↓85%!陌讯时序建模方案在智慧交通的实时优化​
  • AtCoder Beginner Contest 418
  • LLVM编译器入门