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

Java 静态变量、静态方法及工具类介绍

目录

一、静态变量(Static Variables)

1. 基本概念

2. 核心特性

(1)类级别共享

(2)生命周期

(3)内存分配

3. 使用方法

(1)访问方式

(2)初始化时机

4. 典型应用场景

(1)共享常量

(2)计数器功能

(3)配置信息

二、静态方法(Static Methods)

1. 基本概念

2. 核心特性

(1)类级别方法

(2)访问限制

(3)不可重写性

3. 使用方法

基本调用方式

4. 典型应用场景

(1)工具/辅助方法

(2)数学运算

(3)单例模式实现

三、工具类(Utility Classes)

1. 定义

2. 特点​​

3. 静态与非静态的区别

4. 注意事项


一、静态变量(Static Variables)

1. 基本概念

静态变量(也称为类变量)是用 static 关键字修饰的成员变量,它属于整个类而非某个特定对象实例。

2. 核心特性

(1)类级别共享
  • 所有类的实例共享同一个静态变量。

  • 修改一个实例中的静态变量会影响所有其他实例。

(2)生命周期
  • 在类加载时初始化,在程序结束时销毁。

  • 优先于对象出现,比实例变量的生命周期长。

(3)内存分配
  • 静态变量存储在静态区中,静态区在JDK8以前隶属于 JVM 的方法区,到了JDK8以后被迁移至堆内存中。

  • 只分配一次内存空间。

3. 使用方法

(1)访问方式
 // 推荐方式:通过类名直接访问Employee.companyName = "New Corp";​// 也可以通过对象访问(不推荐)Employee emp = new Employee();emp.companyName = "New Corp";
(2)初始化时机
 public class MyClass {// 声明时直接初始化static int count = 0;// 使用静态代码块初始化static {count = initializeCount();}private static int initializeCount() {return 10;}}

4. 典型应用场景

(1)共享常量
 public class Constants {public static final double PI = 3.1415926;}
(2)计数器功能
 public class Car {private static int totalCars = 0;public Car() {totalCars++;}public static int getTotalCars() {return totalCars;}}
(3)配置信息
 public class AppConfig {public static String DB_URL = "jdbc:mysql://localhost:3306/mydb";public static String LOG_PATH = "/var/log/myapp";}

二、静态方法(Static Methods)

1. 基本概念

静态方法是使用 static 关键字修饰的类方法,它属于类本身而非类的实例。

2. 核心特性

(1)类级别方法
  • 不需要创建对象实例即可调用。

  • 通过 ClassName.methodName() 直接访问(通过类名调用)。

  • 多用在测试类和工具类中。

(2)访问限制
  • 只能直接访问类的其他静态成员(变量/方法)。

  • 不能直接访问实例成员(需要先创建对象)。

(3)不可重写性
  • 静态方法不能被重写(Override),只能被隐藏(子类可以定义同名static方法)。

3. 使用方法

基本调用方式
 // 直接通过类名调用int sum = MathUtils.add(5, 3);​// 也可以通过对象调用(不推荐)MathUtils utils = new MathUtils();utils.add(5, 3);  // IDE通常会给出警告

4. 典型应用场景

(1)工具/辅助方法
 public class FileUtils {public static long getFileSize(String path) {File file = new File(path);return file.length();}}
(2)数学运算
 public class Calculator {public static double circleArea(double radius) {return Math.PI * radius * radius;}}
(3)单例模式实现
 public class AppConfig {private static AppConfig instance;private AppConfig() {}public static AppConfig getInstance() {if(instance == null) {instance = new AppConfig();}return instance;}}

三、工具类(Utility Classes)

1. 定义

包含静态方法和静态变量的类,通常被设计为工具类或辅助类,这种类并不用于描述具体的实体事物,而是聚焦于提供通用的功能与服务。由于其所有成员都可通过类名直接调用,无需创建实例,因此通常将构造函数设为私有,从而明确禁止外部对其进行实例化,以确保类的静态成员能被安全、便捷地访问和使用 。

2. 特点​​

  • 私有化构造方法:外界不能创建工具类的对象。

  • 方法定义为静态:仅包含静态方法,方便调用。

3. 静态与非静态的区别

特性静态成员非静态成员
归属实例
内存类加载时分配实例化时分配
访问限制仅能访问静态成员可访问静态和实例成员
线程安全需额外同步(如 volatile实例隔离,天然线程安全

4. 注意事项

  • 静态方法只能访问静态变量和静态方法。

  • 非静态方法可以访问静态变量和静态方法,也可以访问非静态的成员变量和非静态的成员方法。

  • 静态方法中没有this关键字。

http://www.xdnf.cn/news/498.html

相关文章:

  • 六边形棋盘格(Hexagonal Grids)的坐标
  • Git 命令速查手册
  • 每日一记:CRT和图论
  • 分布式系统核心原理
  • 【第1-3章】PLC电工电子基础
  • Linux驱动开发--阻塞、非阻塞I/O
  • 【树莓派Pico FreeRTOS】-中断服务与二值信号量
  • STM32 单片机调试过程中的注意事项
  • dns作业
  • 关于Redis中的事务的理解
  • ping: socket: Operation not permitted
  • JAVAEE(网络原理—UDP报头结构)
  • 嵌入式软件--stm32 DAY 2
  • 鼠标移动操作
  • GNU,GDB,GCC,G++是什么?与其他编译器又有什么关系?
  • 4.17--4.19刷题记录(贪心)
  • swagger的简介及使用方法
  • docker基本使用命令
  • Google Agent 2 Agent 协议深度研究报告
  • Java 编译与反编译深度解析
  • Yarn基本介绍
  • 当我使用uview datetime-picker日期事件插件出行Invalid array length异常时
  • stack,queue和priority_queue
  • gis系统中如何提高shp大文件加载效率
  • 【Datawhale AI春训营】Java选手初探数据竞赛
  • 3D打印加速产品试制
  • 在RK3588上使用ZLMediaKit
  • rabbitmq 面试题
  • 体积虽小,却很好用
  • WSL+Ubuntu+miniconda环境配置