Java中私有静态变量有什么用?

新手上路,请多包涵

如果变量声明为 public static varName; ,那么我可以从任何地方访问它 ClassName.varName 。我也知道静态成员由一个类的所有实例共享,并且不会在每个实例中重新分配。

将变量声明为 private static varName; 与声明变量 private varName; 有什么不同吗?

在这两种情况下,它都不能作为 ClassName.varNameClassInstance.varName 从任何其他类访问。

将变量声明为静态是否会赋予它其他特殊属性?

原文由 Vaibhav Jani 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 617
2 个回答

当然,它可以作为 ClassName.var_name 访问,但只能从定义它的类内部访问 - 这是因为它被定义为 private

public staticprivate static 变量通常用于常量。例如,许多人不喜欢在他们的代码中“硬编码”常量;他们喜欢制作一个 public staticprivate static 具有有意义名称的变量,并在他们的代码中使用它,这应该使代码更具可读性。 (您还应该制作这样的常量 final )。

例如:

 public class Example {
    private final static String JDBC_URL = "jdbc:mysql://localhost/shopdb";
    private final static String JDBC_USERNAME = "username";
    private final static String JDBC_PASSWORD = "password";

    public static void main(String[] args) {
        Connection conn = DriverManager.getConnection(JDBC_URL,
                                         JDBC_USERNAME, JDBC_PASSWORD);

        // ...
    }
}

无论你制作它 public 还是 private 取决于你是否希望变量在类外可见。

原文由 Jesper 发布,翻译遵循 CC BY-SA 4.0 许可协议

静态变量对一个类的所有实例都有一个单一的值。

如果你要做这样的事情:

 public class Person
{
    private static int numberOfEyes;
    private String name;
}

然后你想改名,没关系,我的名字保持不变。然而,如果你想改变它,让你有 17 只眼睛,那么世界上的每个人也会有 17 只眼睛。

原文由 TofuBeer 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题