在java中为什么不能将方法体内的局部变量声明为static的?

如下代码是错误的:
public class example{
public void method(){
static int i=0;
}
}

4个回答

语法规定的。至于存储在哪里不是主要的,因为如果java的语言设计者认为语法规定可以,他总能找到一种办法实现它。实际上c++ vb等语言可以在函数里定义静态变量。
java的语法为什么这么规定?因为这么做基本在现实的编程中没有什么意义,并且完全可以用别的语法达到类似的功能,所以没必要。

加上了static就是静态变量,存储在静态存储区
函数里面的变量都是局部变量,存储在动态存储区
变量的存储地方不一样
你可以理解为这是一种规定,加了static的变量不能在函数中定义!

在java定义中,用static定义的块在对象被创建时就被初始话了,并且被保存在堆区,直到程序结束后才被释放,而且用static定义的变量有一个特点,
那就是该变量只有一份,是共享的。所以在局部变量中定义根本没什么意义(局部变量大多只在它所属的块中使用)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问