84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
我在项目中看到一个类里定义的变量都是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
说白了就是为了方便访问,增加代码阅读性,性能上倒是没有太大的差异.
先回答问题
static是为了让其成为类的成员,而不是对象的成员,这样用起来就方便了
public是为了方便访问
final则是表明这是个常量,不能修改
private的对象,然后定义get、set是为了访问控制,是一种常规的封装
综上,
public static final
可以让访问变得很方便,而且不会被修改。一般可以放配置信息,还有一些状态码的定义。其他的补充:
static修饰的对象是放在引用的根下的,意味着几乎不会被回收
static 是静态的 这样被static修饰过得变量,可以直接用过类名.变量名的方式调用, 而不需要通过类的实例化对象引用
final 修饰变量多用于声明一个常量 在变量被第一次赋值了之后,这个变量就相当于一个常量或者可以理解成这个变量的值固定了,值无法被修改
全局常量。比如项目全局配置,就可以用public static final修饰
定义了private,其他类下面就不可访问。那这样的常量定义又有什么意义呢。
静态常量 举个栗子
上边的
Constant
做为一个常量类,我在其余各种地方需要调用常量的时候直接使用
Constant.OSS_STYLE
就好了说白了就是为了方便访问,增加代码阅读性,性能上倒是没有太大的差异.