java的静态方法中不能有静态变量?

publicstaticvoidf(){staticinti=5;//line1}line1编译错误:Illegalmodifierforparameteri;onlyf... public static void f() {
static int i = 5;//line 1
}
line 1编译错误:Illegal modifier for parameter i; only final is permitted
为何如此?
我想知道为什么方法的局部变量不能加static修饰,至于这样不允许我是知道的
展开
 我来答
mikemelon
推荐于2017-11-24 · TA获得超过4594个赞
知道小有建树答主
回答量:1261
采纳率:0%
帮助的人:1570万
展开全部
在方法内部定义的叫“局部变量”,而不是静态变量,局部变量不能加static,包括protected, private, public这些也不能加。静态变量是定义在类中,方法体外面的。

如果你清楚JVM,应该知道局部变量是保存在栈中的,而静态变量保存于方法区,局部变量出了方法就被栈回收了,而静态变量不会,所以在局部变量前不能加static关键字。
更多追问追答
追问
嗯 有道理 看来得把那个《Deep Into JVM》翻一遍了
追答
嗯,常用的就是栈、堆、方法区这三个,理解了以后对引用变量的认识也会有所提高。
dfttezn
2011-12-13 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:120万
展开全部
静态即:一个数据成员或方法属于它所在的类,而不象一般数据成员或方法,只属于它所在的对象,对象不同,数据成员的值也不同。 静态方法里的变量是临时变量,只在静态方法里有效。而声明STATIC表示该变量属于类。静态变量相当于C语言的全局变量.既然加了static的变量是类一级数据成员,有什么理由放在一个方法里面。方法里面的应该是局部的只有本方法才会用的,在方法里面声明一个类一级的数据成员有何意义呢? 所以JAVA不允许这样做。 要提醒一下,一般的方法同样不能声明静态数据成员。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liubird
2011-12-13 · TA获得超过1932个赞
知道小有建树答主
回答量:898
采纳率:100%
帮助的人:933万
展开全部
Java 在方法的内部是不能够定义静态变量的,可以将它定义为类变量。
public class Test{
static int i = 5; //将i 定义为类 的静态变量。
public static void f() {
//static int i = 5;//line 1
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-12-13 · TA获得超过259个赞
知道小有建树答主
回答量:267
采纳率:100%
帮助的人:189万
展开全部
static修饰的是类变量也就是静态变量,作用域是整个类中。 而方法中定义的变量是局部变量,作用域只在于这个方法中。 如果用static修饰的话不就矛盾了,所以方法中定义的变量不允许用static修饰
追问
你的回答和 dftten差不多,也能解释得过去
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Learn_11
2011-12-13 · TA获得超过153个赞
知道小有建树答主
回答量:224
采纳率:100%
帮助的人:194万
展开全部
在Java 中方法中都不能有 static 修饰的变量
C/C++中可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式