Java中为何声明常量时常用static关键字?
- 内容介绍
- 文章标签
- 相关推荐
本文共计642个文字,预计阅读时间需要3分钟。
今天定义一个类常量,想着也只会有这个类可用,于是没用static关键字修饰。结果sonar代码检查提示:建议将这个字段PERSON_TYPE_USER重命名为符合正则表达式‘^[a-z][a-zA-Z0-9]*$’的形式。我一想,我咋了?
今天定义一个类常量,想着也只有这个类可以用到,就没用static关键字修饰。结果sonar代码检查提示:
Rename this field "PERSON_TYPE_USER" to match the regular expression '^[a-z][a-zA-Z0-9]*$'。
我一想我这是正确的命名规范啊,于是百度一搜这提示,发现前面加个static关键字修饰就可以了。
那么问题来了,我就当前类要使用,不需要设置成全局常量也可以,用static修饰常量有什么好处?
好处就是:在创建类的多个对象时,用static修饰的常量在内存中只有一份拷贝。不用static修饰则可能有多份拷贝。
class A { public static final String CONSTANT_A = "Hello"; public final String CONSTANT_B = "Hello"; }
创建A的多个对象时,CONSTANT_A在内存中只有1份拷贝,CONSTANT_B在内存中有多份拷贝。
本文共计642个文字,预计阅读时间需要3分钟。
今天定义一个类常量,想着也只会有这个类可用,于是没用static关键字修饰。结果sonar代码检查提示:建议将这个字段PERSON_TYPE_USER重命名为符合正则表达式‘^[a-z][a-zA-Z0-9]*$’的形式。我一想,我咋了?
今天定义一个类常量,想着也只有这个类可以用到,就没用static关键字修饰。结果sonar代码检查提示:
Rename this field "PERSON_TYPE_USER" to match the regular expression '^[a-z][a-zA-Z0-9]*$'。
我一想我这是正确的命名规范啊,于是百度一搜这提示,发现前面加个static关键字修饰就可以了。
那么问题来了,我就当前类要使用,不需要设置成全局常量也可以,用static修饰常量有什么好处?
好处就是:在创建类的多个对象时,用static修饰的常量在内存中只有一份拷贝。不用static修饰则可能有多份拷贝。
class A { public static final String CONSTANT_A = "Hello"; public final String CONSTANT_B = "Hello"; }
创建A的多个对象时,CONSTANT_A在内存中只有1份拷贝,CONSTANT_B在内存中有多份拷贝。

