在Java中定义常量字符串?
Posted
技术标签:
【中文标题】在Java中定义常量字符串?【英文标题】:Defining constant string in Java? 【发布时间】:2012-03-27 04:42:24 【问题描述】:我有一个常量字符串列表,我需要在 Java 程序的不同时间显示这些字符串。
在 C 语言中,我可以在代码顶部定义这样的字符串:
#define WELCOME_MESSAGE "Hello, welcome to the server"
#define WAIT_MESSAGE "Please wait 5 seconds"
#define EXIT_MESSAGE "Bye!"
我想知道在 Java 中做这种事情的标准方法是什么?
【问题讨论】:
static final String WELCOME_MESSAGE = "Hello";
?
是的,但我读过一些网站,他们说“final”在 java 中不是常量,所以我不确定。
@csss final
在 Java 中意味着无法更改引用——但它指向的对象仍然可以。幸运的是,Java 中的 String
是一个不可变的类,所以 final String
在这两个方面都是 const。
【参考方案1】:
通常你会在类的顶部定义它:
public static final String WELCOME_MESSAGE = "Hello, welcome to the server";
当然,请根据使用此常量的位置使用适当的成员可见性 (public
/private
/protected
)。
【讨论】:
我一直在想,如果将常量定义为'private',是不是就不需要将常量设置为'static'? 不,应该还是static
。每次实例化类型时,将其设为私有和非静态仍会创建字符串的新副本。见***.com/q/1415955/247763
second @derekerdmann .. 不仅如此,我只是花了几个小时试图调试我的程序失败,没有意识到罪魁祸首一直是我只使用了final String
而我设置的值是实际上无法在其他调用类中访问。【参考方案2】:
看起来像这样:
public static final String WELCOME_MESSAGE = "Hello, welcome to the server";
如果常量仅用于单个类,您需要将它们设为 private
而不是 public
。
【讨论】:
【参考方案3】:public static final String YOUR_STRING_CONSTANT = "";
【讨论】:
【参考方案4】:你可以使用
public static final String HELLO = "hello";
如果你有很多字符串常量,你可以使用外部属性文件/简单 “常量持有者”类
【讨论】:
【参考方案5】:简单地使用
final String WELCOME_MESSAGE = "Hello, welcome to the server";
这条指令的主要部分是'final'关键字。
【讨论】:
【参考方案6】:或者行业中的另一个典型标准是拥有一个名为 Constants.java 的类文件,其中包含要在整个项目中使用的所有常量。
【讨论】:
【参考方案7】:我们通常将常量声明为static
。原因是每次实例化类的对象时,Java 都会创建非静态变量的副本。
因此,如果我们将常量设为static
,它就不会这样做,并且会节省内存。
使用final
,我们可以将变量设为常量。
因此,定义常量变量的最佳做法如下:
private static final String YOUR_CONSTANT = "Some Value";
访问修饰符可以是private/public
,具体取决于业务逻辑。
【讨论】:
你错了。由于 JVM 使用的字符串池,它对节省内存没有帮助。 @Mirimas 不。你在这里错了伙计。静态只初始化一次,但每次初始化一个对象时都会初始化一个非静态变量。 这里使用了字符串池,因为你没有使用“new”关键字来创建字符串。因此,即使您不使用静态字符串,它也会使用字符串池中已创建的引用。查看更多:***.com/questions/3297867/…以上是关于在Java中定义常量字符串?的主要内容,如果未能解决你的问题,请参考以下文章