java - Java中静态变量和方法的作用域

标签 java

我对在 Java 中使用静态方法有一些疑问。 我读过很多地方静态变量是独立于实例的,所以 be 是全局的。

public class ThirdClass {
    public static var = "Java";
}

public class Second {
    public static void main(String[] args) {
        ThirdClass ob1 = new ThirdClass();
        System.out.println(ob1.var);   // prints Java
        ob1.var="Ruby";
        ThirdClass ob2 = new ThirdClass();
        System.out.println(ob2.var);   // prints Ruby
    }
}

public class First {
    public static void main(String[] args) {
        ThirdClass ob3 = new ThirdClass();
        System.out.println(ob1.var);   // prints Java again!!!
    }
}

正如您在第二类中看到的,ThirdClass 的多个实例共享变量 var 的同一个实例。但是类 First 中的一个单独实例不访问最终值“Ruby”但显示原始“Java”。这意味着静态变量不是全局变量,而是仅对单次执行全局变量!!!

与实例变量相比,创建静态变量是否占用大量资源?

请提出建议。

最佳答案

It means the static variable are NOT global variable but only global to single execution!!!

当然是。 所有未持久保存到某种存储(如硬盘)的变量不会在程序的不同执行之间保留它们的值。

关于java - Java中静态变量和方法的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4403031/

相关文章:

java - 错误地解析日期

java - 运行 Ruby 文件时 ToolTwist Workbench 出现错误

java - 如何监视 Java EE 应用程序中的文件更改?

Java:如何以 ISO 8601 SECOND 格式获取当前日期

java - 如何在自己的类中模拟 ConcurrentModificationException?

java - 让扫描仪在java中读取一个字符串

java - 使用 CruiseControl.net 将 Java 应用程序部署到 Tomcat

java - 如何使用 new BufferedWriter(new FileWriter()); 的一个实例写入文件以不同的方法

尝试运行 clojure Web 应用程序时出现 java.lang.IllegalArgumentException

java - 有没有比quartz更好的方法在JAVA中运行批处理