应该使用哪个变量声明?

时间:2012-09-14 02:14:19

标签: java variables

我想写完美的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,哪一个是最好的,你能解释一下原因吗?

非常感谢。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

由于它永远不会改变,因此在所有类实例中不需要多个副本,因此请将其设置为静态。

同样,因为它永远不会改变,所以最后,如果代码确实试图改变它,编译器将报告错误。 (也可能存在运行时性能优势)。

是公共还是私有取决于您是否需要将其公开给其他类。喜欢私密,只在必要时公开。

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

答案 2 :(得分: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;