在Java中定义常量字符串?

在Java中定义常量字符串?,java,string,Java,String,我有一个常量字符串列表,我需要在Java程序的不同时间显示这些字符串 在C语言中,我可以在代码顶部定义如下字符串: #定义欢迎消息“您好,欢迎使用服务器” #定义等待消息“请等待5秒” #定义退出消息“再见!” 我想知道在Java中做这类事情的标准方法是什么?通常您会在类的顶部定义: public static final String WELCOME_MESSAGE = "Hello, welcome to the server"; 当然,根据使用此常量的位置,使用适当的成员可见性(pub

我有一个常量字符串列表,我需要在Java程序的不同时间显示这些字符串

在C语言中,我可以在代码顶部定义如下字符串:

#定义欢迎消息“您好,欢迎使用服务器”
#定义等待消息“请等待5秒”
#定义退出消息“再见!”

我想知道在Java中做这类事情的标准方法是什么?

通常您会在类的顶部定义:

public static final String WELCOME_MESSAGE = "Hello, welcome to the server";

当然,根据使用此常量的位置,使用适当的成员可见性(
public
/
private
/
protected
)。

它将如下所示:

public static final String WELCOME_MESSAGE = "Hello, welcome to the server";
如果这些常量仅在单个类中使用,您可能希望将它们设置为
私有
,而不是
公共

public static final String YOUR_STRING_CONSTANT = "";
 public static final String HELLO = "hello";
如果有许多字符串常量,则可以使用外部属性文件/simple “常量持有者”类只需使用

final String WELCOME_MESSAGE = "Hello, welcome to the server";

本说明的主要部分是“final”关键字。

或行业中的另一个典型标准是使用Constants.java命名类文件,其中包含整个项目中使用的所有常量。

我们通常将常量声明为
静态
。这是因为每次实例化类的对象时,Java都会创建非静态变量的副本

因此,如果我们将常量
设为静态
,它将不会这样做,将节省内存

使用
final
我们可以使变量保持不变

因此,定义常量变量的最佳实践如下:

private static final String YOUR_CONSTANT = "Some Value"; 

根据业务逻辑,访问修饰符可以是私有/公共?是的,但我读过一些网站,他们说“final”在java中不是常量,所以我不确定。@csss
final
在java中表示引用不能更改,但它指向的对象仍然可能更改。幸运的是,Java中的
String
是一个不可变的类,因此
final String
在这两方面都是常量。我一直想知道,如果将常量定义为“private”,是否没有必要将常量设置为“static”?不,它仍然应该是
static
。使其私有且非静态仍会在每次实例化类型时创建字符串的新副本。我看错你了。由于JVM使用的字符串池,这无助于节省内存。@Mirimas Nope。你错了,伙计。静态变量只初始化一次,但非静态变量在每次初始化该变量的对象时都会初始化。这里使用字符串池,因为您不使用“new”关键字来创建字符串。因此,即使您不将static用于字符串,它也将使用字符串池中已创建的引用。查看更多: