当前位置: 首页 > 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.lryc.cn/news/457381.html

相关文章:

  • PCB缺陷检测数据集 xml 可转yolo格式 ,共10688张图片
  • 【linux开发-驱动】-设备树
  • 不动产证ocr识别场景解析、房产证识别API
  • gpg 密钥生成、导入、导出、自动输入密码
  • 新个性化时尚解决方案!Prompt2Fashion:自动生成多风格、类型时尚图像数据集。
  • 软件设计师——计算机网络
  • Python 实现电话号码和Email地址提取程序
  • JavaGuide(3)
  • 微信小程序15天
  • 用Python制作数据可视化仪表盘:使用Dash与Plotly构建实时交互式仪表盘
  • 干部管理系统:全面提升干部管理效能
  • Java之方法
  • MyBatis 数据表与实体映射的隐藏陷阱
  • leetcode-239. 滑动窗口最大值
  • springboot项目中开启mybatis的sql日志
  • 卷积的计算——nn.Conv2d(Torch.nn里的Convolution Layers模块里的Conv2d类)
  • 确保接口安全:六大方案有效解决幂等性问题
  • 代码随想录算法训练营第二十九天| 93. 复原 IP 地址,78. 子集, 90. 子集 II
  • 【WebGis开发 - Cesium】三维可视化项目教程---初始化场景
  • 点云中ICP算法的详解
  • 抽象类Abstart Class
  • Redis:通用命令 数据类型
  • 【Python高级编程】探索Python库:创建引人入胜的交互界面
  • OpenCV Canny()函数
  • Java基础(3)
  • 【C语言】VS调试技巧
  • 【华为HCIP实战课程七】OSPF邻居关系排错MTU问题,网络工程师
  • 速盾:休闲类游戏如何选择高防cdn?
  • 电脑插上U盘不显示怎么回事?怎么解决?
  • Python 如何使用 SQLAlchemy 进行复杂查询