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

Java之静态

静态:

使用 static 关键字声明的成分属于类本身,而不是类的任何特定对象的实例。这意味着你可以在创建类的任何对象之前访问它们。

静态变量:

 静态变量(也称为类变量)是被类的所有实例共享的变量。无论你创建多少对象,静态变量只有一份拷贝。静态变量通常用于定义类级别的常量或者跟踪类的所有实例共享的信息。在 Java 中,静态变量于类(Class)而不是某个特定的对象实例。所有对象共享同一个静态变量,所以如果存在对象改变静态变量,静态变量会变成最新改变的值。

public class Student {static int studentCount = 0; // 静态变量,用于计数// 构造方法public Student() {studentCount++; // 每次创建对象时增加计数}// 静态方法,获取当前学生计数public static int getStudentCount() {return studentCount;}public static void main(String[] args) {Student s1 = new Student();Student s2 = new Student();System.out.println("Total students: " + Student.getStudentCount()); // 输出学生总数}
}

在这个例子中,studentCount 是一个静态变量,用于跟踪创建的 Student 对象的数量。无论创建多少个 Student 对象,都只有一个 studentCount 变量。 

静态变量的应用场景

  • 计数器: 如上面的例子所示,用于统计对象的数量或函数被调用的次数。
  • 配置参数: 存储全局配置或常量,供整个程序共享使用。
  • 单例模式: 在设计模式中,使用静态变量确保一个类只有一个实例。

 静态方法  

静态方法是属于类的方法,而不是类的实例。这意味着你可以不创建类的实例而调用静态方法静态方法只能直接访问类的静态成员(变量和方法),不能直接访问非静态成员。

样例一 

public class Calculator {public static int add(int a, int b) {return a + b; // 静态方法,可以通过类名直接调用}
}

在这个例子中,add 是一个静态方法,可以使用 Calculator.add(5, 3) 来调用,而不需要创建 Calculator 类的对象。 

package Static;
//工具类,不需要创建对象,而是运用其中的方法
public class ArrayUtil {//私有化构造方法,目的是为了不让外界创建他的对象private ArrayUtil() {}//需要定义为静态的,方便调用// 静态方法中没有this关键字// 静态里面不能调用非静态的,非静态可以访问所有public  static String PrintArray(int[] arr) {//System.out.println(showArray(arr));无法访问StringBuffer sb = new StringBuffer();sb.append("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) sb.append(arr[i]);else sb.append(arr[i] + ",");}sb.append("]");return sb.toString();}public int showArray(int[] arr) {return arr.length;}
}

 主方法当中的调用:

package Static;public class TestArray {public static void main(String[] args) {//测试工具类中的方法是否正确int arr[] = {1,2,3,4,5};String str = ArrayUtil.PrintArray(arr);System.out.println(str);}
}

样例二:

public class MathUtil {public static double PI = 3.141592653589793;public static double add(double a, double b) {return a + b;}public static double calculateCircleArea(double radius) {return PI * radius * radius;}
}public class Main {public static void main(String[] args) {double sum = MathUtil.add(5.0, 3.0);double area = MathUtil.calculateCircleArea(2.5);System.out.println("Sum: " + sum);         // 输出: Sum: 8.0System.out.println("Area: " + area);       // 输出: Area: 19.634954084936208}
}

 解释: MathUtil 类中的 addcalculateCircleArea 方法都是静态方法,可以直接通过类名调用,而无需创建 MathUtil 的实例。

静态方法的应用场景

  • 工具类方法: 如数学运算、字符串处理等不依赖于对象状态的功能。例如,Java 中的 Math 类中的 sqrt 方法。
  • 工厂方法: 用于创建类的实例,而无需直接使用构造函数。例如,Java 中的 Integer.valueOf 方法。
  • 单例模式: 静态方法常用于获取单例对象的实例。
  • 配置和初始化: 用于初始化类级别的配置或资源。

注意:

尽量在创建对象之前来调用静态方法或者静态变量。 

原因:

  • 静态成员的独立性:静态方法和变量不依赖于对象实例,可以在无需创建对象的情况下直接访问和调用。

  • 资源与性能优化:通过避免不必要的对象创建,静态成员的使用有助于节省内存和提升性能,尤其是在高频调用的场景中。

  • 代码简洁与一致性:静态成员通过类名直接访问,使代码更加简洁,并且确保了全局数据的一致性。


http://www.mrgr.cn/news/47497.html

相关文章:

  • 新型物联网智能断路器功能参数介绍
  • web前端第三次作业
  • 【大数据】Apache Superset:可视化开源架构
  • 【Web】软件系统安全赛CachedVisitor——记一次二开工具的经历
  • 【C++多线程编程:六种锁】
  • 微信小程序实现长按录音,点击播放等功能,CSS实现语音录制动画效果
  • java速成指南
  • minio集群部署
  • JSONL 文件的检查和修订器
  • AVL树如何维持平衡
  • 51单片机的无线通信智能车库门【proteus仿真+程序+报告+原理图+演示视频】
  • k8s网络通信
  • 【网络安全 | Java代码审计】华夏ERP(jshERP)v2.3
  • 5个免费ppt模板网站推荐!轻松搞定职场ppt制作!
  • HTML5+Css3(背景属性background)
  • 【firefox】火狐浏览器、火狐浏览器驱动、selenium版本号对应关系
  • rocky9 samba共享
  • MinIO分片上传超大文件(纯服务端)
  • 哪种隔音方式最好?小户型如何隔音?
  • Java 快速排序
  • 基于SpringBoot+Vue+Uniapp微信小程序的电子竞技信息交流平台设计与实现
  • 《花100块做个摸鱼小网站! 》第七篇—谁访问了我们的网站?
  • Biomamba求职| 国奖+4篇一作SCI
  • 路径跟踪之导航向量场——二维导航向量场
  • 239. 滑动窗口最大值
  • 喜讯!迈威通信TSN产品通过“时间敏感网络(TSN)产业链名录计划”评测,各项指标名列前茅