所有示例变量都在函数外声明吗?

yiytaume  于 2021-07-12  发布在  Java
关注(0)|答案(4)|浏览(340)

我知道变量可以分为两类ways:-
第一种方法是根据它们的范围将它们分为全局变量和局部变量。当一个类示例的所有方法都可以访问该变量时,即在整个类中,则称为全局变量;当该变量只能在类示例的一个代码块中访问时,称为局部变量。
第二种方法是将它们分类为类/静态示例/非静态变量。类/静态变量是那些属于类的变量,对于类的所有示例,这些变量只存在一个副本,并且由它们共享。示例变量是属于类示例的变量,并且为每个示例创建单独的副本。
我的导师说示例变量只能在函数外声明。为什么会这样?局部变量不能是示例变量吗?

ipakzgxi

ipakzgxi1#

如果在方法中声明一个变量,它就是属于该方法的局部变量。当方法终止时,它将超出范围。使变量属于示例的唯一方法是直接在类下声明它,即在任何方法之外。
编辑:
以下是@yeikel建议的示例:

public class MyClass {

    private static int iAmAStaticMember = 1;

    private int iAmAnInstanceMember;

    public void someMethod() {
        int iAmALocalVariables = 4;
    }
}
9lowa7mx

9lowa7mx2#

如果它们是在方法内声明的,则它们仅在方法范围内。方法运行后,变量被销毁。

public class Something {

    int j = 0; // j lives as long as the class exists

    public doSomething() {
        int i = 0;
        // i is gone after method run
    }
}
d8tt03nd

d8tt03nd3#

只有全局变量可以分为示例变量和静态变量。函数中的变量是函数的局部变量,既不属于类也不属于对象。示例变量属于对象,静态变量属于类。

vulvrdjw

vulvrdjw4#

在java中,有示例、静态和局部变量。
静态变量是属于类本身的类级变量,因此所有类/对象都维护和使用一个副本。当类被类装入器装入时,它们被激活,而当类被卸载时,它们就死了。
示例变量绑定到类的示例,即对象。因此,创建的每个对象都有一个变量的副本。基于访问修饰符,在类外对其用法施加限制(通常是私有的,通过getter和setter访问)。它们在创建示例时变为活动状态,在垃圾收集器看到对象没有指向它的有效/正在使用的引用时变为消亡状态。
局部变量是方法级变量,即它们是方法的局部变量。这些变量是在调用方法时创建的(无论是以静态方式还是通过对象引用),当方法执行完成时,或者换句话说,当方法将控制权返回给调用者时,这些变量就消失了。

class Demo {

    // static variable - can be accessed by any class/object
    public static int num1 = 1;

    // instance variable - accessed by all objects of this class; if made private, can use accessor methods to access it
    public int num2 = 2;

    // num3 is a local variable (method arguments are also local variables)
    public void getSum() {
        int num3 = 3;
        return num2 + num3;
    }

}

希望这有帮助:)

相关问题