如果一个变量被声明为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相关问答推荐

Annotation @ Memphier无法正常工作,并表示:class需要一个bean,但找到了2个bean:

当一个链表中间有一个循环时,它的松散部分会发生什么?

Jooq外键关系

使用JdkClientHttpRequestFactory通过Spring RestClient和Wiemock读取时达到EOF

有关手动创建的包的问题

无法在WebSocket onMessage中捕获错误

Bean定义不是从Spring ApplationConext.xml文件加载的

Java-动态绑定-问题-了解

Tinylog中的滚动文件会在每次应用启动时覆盖日志(log)文件

在Spring Boot应用程序中,server.port=0的默认端口范围是多少?

STREAMS减少部分结果的问题

如何使用jooq更新记录?

JPA无手术同品种器械可能吗?

在Java中使用StorageReference将数据从Firebase存储添加到数组列表

无泄漏函数的Java DRY

Springboot应用程序无法识别任何@RestController或@Service,我认为@Repository也无法识别

什么是;u〃;平均值;jdku;在java开发工具包中?

如何转换Vector<;对象>;转换为int?

在外部类和内部类之间,当调用外部类内部或外部的主方法时,它们的静态初始化程序的运行顺序不同

OpenAPI Maven插件生成错误的Java接口名称