我想写完美的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,哪一个是最好的,你能解释一下原因吗?
非常感谢。
答案 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;