首页 > 其他分享 >static final 的含义和作用

static final 的含义和作用

时间:2024-07-25 21:42:28浏览次数:7  
标签:初始化 常量 含义 public 字段 static final

在Java中,static final结合使用具有特定的含义和用途:

static final 的含义和作用

  1. static

    • static修饰符表示该字段或方法属于类本身,而不是类的实例。也就是说,static字段或方法被所有实例共享,而不是每个实例都有自己的副本。
    • static字段或方法在类加载时初始化,并且在整个程序运行期间只有一份拷贝。
  2. final

    • final修饰符表示该字段一旦初始化后,其值不能被改变。对于final字段,这意味着它必须在定义时或构造函数中被初始化,并且之后不能再修改。

staticfinal一起使用时,通常表示一个类级别的常量。这样做的好处是,这个常量的值在整个程序中是共享的,并且在定义后不能被修改。

使用场景

  1. 定义常量

    • static final通常用于定义常量,这些常量在程序运行时不会改变。常量通常用大写字母命名,并用下划线分隔。
  2. 共享数据

    • 由于static字段是类级别的,它们在所有实例之间共享。如果常量是共享的且不会改变,使用static final是很合适的。

示例

1. 定义常量

public class MathConstants {

    public static final double PI = 3.141592653589793;
    public static final int MAX_SIZE = 100;
}

在这个示例中,PIMAX_SIZE是类级别的常量。由于它们是static的,所有实例共享相同的值;由于它们是final的,它们的值在初始化后不能更改。

2. 使用常量

public class Circle {

    public double getCircumference(double radius) {
        return 2 * MathConstants.PI * radius;
    }
}

在这个示例中,Circle类使用MathConstants.PI常量来计算圆周长。PI常量在程序的任何地方都保持不变且共享。

3. static final字段的初始化

  • 静态初始化

    • static final字段可以在定义时直接初始化,如上例中的PIMAX_SIZE
  • 静态块初始化

    • 如果常量的初始化比较复杂,可以使用静态初始化块:
    public class Configuration {
    
        public static final String CONFIG_VALUE;
    
        static {
            // 静态初始化块
            CONFIG_VALUE = "some value";
        }
    }
    

总结

  • static:表示字段或方法属于类本身,而不是实例,所有实例共享。
  • final:表示字段的值在初始化后不能被改变。
  • static final:通常用于定义类级别的常量,这些常量在程序运行期间是共享的,并且其值不可修改。

使用static final关键字定义常量能够提高代码的可读性和可维护性,并且避免了硬编码的魔法数字或字符串。

标签:初始化,常量,含义,public,字段,static,final
From: https://www.cnblogs.com/echohye/p/18324184

相关文章

  • 何时使用static_cast、dynamic_cast、const_cast和reinterpret_cast
    在C++中,类型转换操作符static_cast、dynamic_cast、const_cast和reinterpret_cast各有其特定的使用场景。下面是每种类型转换操作符的基本用途和何时使用它们的指南:1. static_cast用途:主要用于基本数据类型之间的转换,以及有明确定义的类层次结构中的向上转换(派生类到基类)和......
  • 如果 MEDIA_URL 在 STATIC_URL 之内,即使设置不同,运行程序也无法提供媒体
    在我的服务器中,django和nginx部署在ECSFargate上并连接到负载均衡器,但URL是由Akamai传输的https://www.exmplae.com/company/playground/*->https://amazonloadbalancer/*所以,https://www.exmplae.com/company/playground/是浏览器中的网址。我在......
  • cpu proc sys文件系统下的含义
    proc文件系统(/proc/sys/kernel/)sched_child_runs_first/proc/sys/kernel/sched_child_runs_first是Linux内核中的一个配置文件,它用于控制调度器如何处理新创建的进程(即子进程)与它们的父进程之间的关系。功能说明:sched_child_runs_first:这个文件的值决定了当一个新进程(子进......
  • java8interface的新特性:default,static,funcation
    default:默认方法在类接口中可以直接定义的方法,实现接口的类可以直接使用使用案例:publicinterfaceMyInterface{defaultvoiddisplay(){System.out.println("Thisisdefaultmethod.");}}说明:被default修饰的方法可以不被子类实现。即在......
  • linux top命令中各个值的含义
    top:这是 top 命令显示的标题行,通常包含系统的当前时间、已运行时间、当前登录用户数、系统负载等信息。Tasks:这部分显示了进程相关的统计信息:总进程数(Tasks):当前系统中运行的进程总数。正在运行的进程数(Running):当前正在执行的进程数。睡眠中的进程数(Sleeping):当前......
  • PHP中static的使用
    本文由ChatMoney团队出品PHP,作为一种面向对象的编程语言,为开发者提供了丰富的特性和功能,助力构建高效的应用程序。其中,static关键字在类和方法中的应用尤为重要,它提供了一种独特的变量和方法访问机制。本文将深入探讨static关键字的使用方法,并通过具体代码示例来指导实践。一......
  • 封装 static静态关键字 可变参数 递归
    一.封装1.this1.当成员变量和局部变量重名时,调用遵循"就近原则",先调用局部的2.this代表的是当前对象,哪个对象调用this所在的方法,this就代表哪个对象3.作用:区分重名的成员变量和局部变量(this后面肯定是成员的)publicclassPerson{Stringname;/**......
  • python中逗号运算符的含义
    我理解了python中逗号运算符的简单概念。例如,x0,sigma=0,0.1表示x0=0,sigma=0.1。但我获得了一个代码,其中有一行如下所示。y,xe=np.histogram(np.random.normal(x0,sigma,1000))其中y和xe的输出如下。yOut[10]:array([3,17,58,136,216,25......
  • Java学习日历(static,工具类,继承)
    staticstatic表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。特点:被该类所有对象共享不属于对象,属于类随着类的加载而加载,优先于对象存在调用方式:类名调用(推荐)对象名调用工具类帮助我们做一些事情的,但是不描述任何事物的类类名见名知意私有化构造方法......
  • java项目(knife4j使用,静态资源未放在static资源包下,公共字段自动填充,Spring Cache与Spr
    Knife4j(生成接口文档)使用swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。官网:https://swagger.io/Knife4j是为JavaMVC框架集成Swagger生成Api文档的增强解决方案。使用方式1、导入knife4j的maven坐标<dependency>......