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

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

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

将变量声明为静态会给它带来其他特殊属性吗?

推荐答案

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

public staticprivate static个变量通常用于常量.例如,许多人不喜欢在代码中"硬编码"常量;他们喜欢用有意义的名称创建一个public staticprivate static变量,并在代码中使用它,这会使代码更具可读性.(你也应该设定这样的常数).

例如:

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取决于是否希望变量在类外可见.

Java相关问答推荐

使用 UNICODE_CHARACTER_CLASS 标志时的不同 Java 正则表达式匹配行为

调用方法以try 并重新运行代码块

如何在日期选择器中设置不在当前月份的单元格

Springboot的@Controller和@RestController注解什么时候使用,底层概念是什么?

Java泛型:类型参数的多个边界

工厂设计模式在以下示例中如何帮助我们?

如何使用固定参数和可变参数制作流?

Stream API - 如果 filter() 紧随其后, sorted() 操作如何工作?

@PutMapping MockHttpServletResponse 的 JUnit RestControllerTest 正文为空

英特尔酷睿 i5 处理器上的 Java 多线程

如何在 Java 中解析没有日期的月份和年份?

设计查询 - 使用 Java 泛型进行代码复制

为什么打印停止而没有错误?

深度优先搜索找到二叉树的最大深度

从 List 到 List 的 Java 流

如何更改 GridPane 中节点的位置

没有@Target 的注解类型可以在任何地方使用吗?

java中的字节数组和字符串

如何使用 Math.random() 在 Java 中模拟 60% 的概率

Java 8 Streams 映射对象的浅拷贝,使用流交叉连接