在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中定义常量字符串?的主要内容,如果未能解决你的问题,请参考以下文章

java 常量啥怎么定义的?

java中如何定义常量

Java开发技术栈:Java基础语法

什么是常量?Java中,常量的定义规则都有哪些?

常量与变量有何区别呢?字符常量与字符串常量有何区别呢?

Java的基础语法: 常量,数据类型,变量