【发布时间】:2018-07-07 14:04:43
【问题描述】:
我一直在拼命寻找明确的答案,我想我有点明白了,但同时我不太明白这个关键字的广义概念,静态。
这是我制作的场景:
package oops;
public class Math {
boolean notNumber = false;
static boolean notString = false;
public static void main(String[] args) {
int num1 = 1;
static int num2 = 1; //doesn't work
Math math = new Math();
math.notNumber = true;
notNumber = true; //doesn't work
notString = true;
}
public void whatever() {
notNumber = true;
}
}
为什么不能在静态方法(或任何方法)内将变量声明为静态? “范围”是什么意思?我知道静态变量与类的特定实例无关,它更像是一个“全局”变量。但是为什么不能在方法内部创建静态变量(num2),却可以使用静态变量(notString)呢?
当你制作静态变量时,你必须在类中制作它们吗?方法中不可能?
由于我将 notNumber 声明为非静态,我知道我必须创建一个对象来访问该变量。但是为什么它在whatever()中没有任何创建对象的情况下可以工作,而在静态方法main()中却不行?
【问题讨论】:
-
局部静态变量如何工作? “静态”的特殊属性是什么?
-
感谢您的链接,这绝对帮助我更好地理解它