【问题标题】:What is the difference between a class variable and a global variable?类变量和全局变量有什么区别?
【发布时间】:2018-04-23 12:56:38
【问题描述】:

有什么区别吗?它们只是不同的术语吗?我需要能够解释学校的差异,我在下面写的似乎是互联网描述的全局变量。

这是我的代码:

public class variableTypes

{
    public static String a = "hello!"; //<--- global variable (i think)

public static void main(String[]args)
{
  System.out.println(variableTypes.a);
}

【问题讨论】:

标签: java variables global-variables class-variables


【解决方案1】:

静态的东西可以被同一命名空间中的任何类或方法访问。静态变量将在程序的整个生命周期内持续存在。

类本地的东西,只会在该类的实例(对象)的生命周期内存在,并且只能通过实例访问。

函数/方法本地的东西,只会在该方法的执行中存在。

区别在于:

  • i = Class.variable
  • i = myClass.variable
  • i = myClass.Function() 如果函数是像 int apple = 4; return apple 这样简单的函数,否则,实际上没有办法访问方法/函数的本地变量。

注意:我忽略了访问修饰符,但假设一切都是公开的,我们只能说这是正确的。否则,我所说的每件事大部分都只适用于一些额外的工作。 (可能也是更好的做法。)

Disclamer:我以前使用过 Java,但这不是我经常使用的东西。但这些概念非常标准。

声明:我也是学生,我可能是错的,但我认为我是对的。

我找到了这个网站,它似乎有点支持我所说的: https://www.guru99.com/java-static-variable-methods.html

网站离线时的相关部分:

Java 静态变量 属于类的变量 不要对象(实例)静态变量只初始化一次, 在执行开始时。这些变量将被初始化 首先,在初始化任何实例变量之前单 由类的所有实例共享的副本静态变量可以 通过类名直接访问,不需要任何对象 语法:.

祝你好运!

【讨论】:

    【解决方案2】:
    class A {
        static String text = "Manoj";
    
        static void print() {
            String stack = "Stack";
            System.out.println(stack);// local variable
            System.out.println(A.text);// global
        }
    
        public static void main(String... args) {
            print();
            System.out.println(stack);// will give error because scope is local to print method
            System.out.println(A.text);// global so will work anywhere in class
        }
    }
    

    【讨论】:

    • 误导。 text 是类级别的变量,而不是全局变量。在Java中,不可能拥有未链接到类/接口的变量,这是它是“全局” span>的先决条件
    • 在Java中没有全局变量的直接概念,但是您以下面的方式以不同的方式实现相同的方式。公共静态字符串文本 = "Manoj";
    猜你喜欢
    • 1970-01-01
    • 2016-01-17
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2012-12-17
    • 2011-11-17
    相关资源
    最近更新 更多