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

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.xdnf.cn/news/17542.html

相关文章:

  • 【C++】string 的特性和使用
  • Python(13) -- 面向对象
  • 【面试场景题】通过LinkedHashMap来实现LRU与LFU
  • Java+Vue打造的采购招投标一体化管理系统,涵盖招标、投标、开标、评标全流程,功能完备,附完整可二次开发的源码
  • 标准IO实现
  • Effective C++ 条款32:确定你的public继承塑模出 is-a 关系
  • AWT 基本组件深入浅出:Button/Label/TextField/Checkbox/Choice/List 全面实战与性能优化
  • 2025-08-09 李沐深度学习14——经典卷积神经网络 (2)
  • MySQL相关概念和易错知识点(4)(分组查询、连接查询、合并查询、子查询)
  • Mysql笔记-系统变量\用户变量管理
  • 【LLM实战|langchain】langchain基础
  • toRef和toRefs
  • 智慧城管复杂人流场景下识别准确率↑32%:陌讯多模态感知引擎实战解析
  • Easysearch 冷热架构实战
  • Linux下管道的实现
  • SpringBoot 集成 MapStruct
  • 《从零实现哈希表:详解设计、冲突解决与优化》
  • [激光原理与应用-197]:光学器件 - 图解双折射晶体的工作原理
  • Aurora接口FPGA设计
  • C# 异步编程(使用异步Lambda表达式)
  • pdf预览Vue-PDF-Embed
  • C++ 类模板
  • Android MVP架构详解:从理论到实践
  • [优选算法专题一双指针——四数之和]
  • 大语言模型概述
  • 【后端】Java Stream API 介绍
  • Java -- 日期类-第一代-第二代-第三代日期
  • Datawhale AI夏令营第三期,多模态RAG方向 Task2
  • QT环境搭建
  • 下肢康复机器人机械结构设计cad【6张】三维图+设计说明说书