【问题标题】:Is it safe to assume that a static variable always exists [duplicate]假设静态变量始终存在是否安全[重复]
【发布时间】:2015-05-31 21:12:34
【问题描述】:

在 Java 中,我一直认为类变量(使用关键字 static 定义)等同于其他语言(如 C)中的全局变量,在类中定义以避免名称冲突。在 C 语言中,您可以随时从任何函数引用全局变量,它在程序运行时始终存在。

Java 中的静态变量怎么样。它们总是存在吗?当他们被推荐时,他们总是被加载吗?我想知道当我使用另一个类的静态方法中的静态变量时它是否总是安全的。

静态变量也会被销毁吗?

【问题讨论】:

  • 你所说的“存在”和“被破坏”是什么意思?

标签: java


【解决方案1】:

一个静态变量在类初始化的时候被初始化,所以它总是有效的 (Initialization of Classes and Interfaces)。

类的初始化包括执行其静态初始化程序和类中声明的静态字段(类变量)的初始化程序。

如果静态字段的值发生变化,并且没有其他对前一个值的引用,那么前一个值将被垃圾回收。但是,引用本身将始终存在,因此如果“安全”意味着“从不访问非法内存”,那么它始终是安全的(在一般情况下使用 Java 语言时,不只是在这种情况下)。

【讨论】:

    猜你喜欢
    • 2010-09-19
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 2018-08-23
    • 2011-02-03
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多