0

我想写出完美的Java代码,所以请让我问这个问题。

我想String在我的方法中使用一个永不改变的变量,如下所示:

1. String STR4SEARCH_START = "Abc";

我可以在我的方法中定义它,因为它不需要更改,我也可以在我的类中定义它,如下所示:

2. private final String STR4SEARCH_START = "Abc";
3. private static final String STR4SEARCH_START = "Abc";
4. public final String STR4SEARCH_START = "Abc";
5. public static final String STR4SEARCH_START = "Abc";

这是我的问题:从way1-way5,哪一个是最好的,你能解释一下为什么吗?

非常感谢。

4

3 回答 3

5

这取决于。如果您希望其他人(班外)能够查看它,请使用publicnot private,反之亦然。除此之外,我肯定会使用static final,因为您本质上想要定义一个不变的常数,正如您所说。static因为你的类的每个实例化都不需要不同的值,而且final它的值不会改变。

于 2012-09-14T02:16:24.923 回答
1

因为它永远不会改变,你不需要在你的所有类实例中复制一个以上的副本,所以让它成为静态的。

同样,因为它永远不会改变,所以让它成为最终的,这样如果代码确实试图改变它,编译器就会报告一个错误。(也可能有运行时性能优势)。

它应该是公共的还是私有的取决于您是否需要将它公开给其他类。首选私有,仅在必要时才公开。

因此,无论是私有静态最终还是公共静态最终(如有必要)。

于 2012-09-14T02:19:16.547 回答
0
I want to use a never change String variable 

根据您的要求,我建议您创建一个名为 ConstantCodes.java 的类。这个类将在其中存储所有这些类型的变量。您可以在其中声明变量,如下所示。您可以声明变量,final因为它的值不会改变。

public class ConstantCodes 
{
     public static final String STR4SEARCH_START = "Abc";
     ...
     ...
}

您可以从如下任何类直接访问此变量,

String myNewVariable = ConstantCodes.STR4SEARCH_START;
于 2012-09-14T02:22:30.267 回答