扫码关注官方订阅号
我在项目中看到一个类里定义的变量都是public static final的,问了一下同事说是常量类,为什么要这么定义呢?是因为static是全局的,final是不可修改的吗?那这和定义一个private变量再定义一个get方法有什么区别?
认证0级讲师
static是为了让其成为类的成员,而不是对象的成员,这样用起来就方便了
public是为了方便访问
final则是表明这是个常量,不能修改
private的对象,然后定义get、set是为了访问控制,是一种常规的封装
综上,public static final可以让访问变得很方便,而且不会被修改。一般可以放配置信息,还有一些状态码的定义。
public static final
static修饰的对象是放在引用的根下的,意味着几乎不会被回收
static 是静态的 这样被static修饰过得变量,可以直接用过类名.变量名的方式调用, 而不需要通过类的实例化对象引用final 修饰变量多用于声明一个常量 在变量被第一次赋值了之后,这个变量就相当于一个常量或者可以理解成这个变量的值固定了,值无法被修改
全局常量。比如项目全局配置,就可以用public static final修饰
定义了private,其他类下面就不可访问。那这样的常量定义又有什么意义呢。
静态常量 举个栗子
public class Constant { public static final int DEAFULT_TAG = 0xcc33; public static final int DEFAULT_VERSION = 1; public static final Long PHOTO_PRICE = 1L; public static final String OSS_STYLE = "?x-oss-process=style/photo_printer"; }
上边的 Constant做为一个常量类,我在其余各种地方需要调用常量的时候
Constant
直接使用 Constant.OSS_STYLE 就好了
Constant.OSS_STYLE
说白了就是为了方便访问,增加代码阅读性,性能上倒是没有太大的差异.
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
先回答问题
static是为了让其成为类的成员,而不是对象的成员,这样用起来就方便了
public是为了方便访问
final则是表明这是个常量,不能修改
private的对象,然后定义get、set是为了访问控制,是一种常规的封装
综上,
public static final可以让访问变得很方便,而且不会被修改。一般可以放配置信息,还有一些状态码的定义。其他的补充:
static修饰的对象是放在引用的根下的,意味着几乎不会被回收
static 是静态的 这样被static修饰过得变量,可以直接用过类名.变量名的方式调用, 而不需要通过类的实例化对象引用
final 修饰变量多用于声明一个常量 在变量被第一次赋值了之后,这个变量就相当于一个常量或者可以理解成这个变量的值固定了,值无法被修改
全局常量。比如项目全局配置,就可以用public static final修饰
定义了private,其他类下面就不可访问。那这样的常量定义又有什么意义呢。
静态常量 举个栗子
上边的
Constant做为一个常量类,我在其余各种地方需要调用常量的时候直接使用
Constant.OSS_STYLE就好了说白了就是为了方便访问,增加代码阅读性,性能上倒是没有太大的差异.