在方法中为什么不能定义static变量?

acboboly 2005-09-27 01:18:50
程序1:
public class Hello {
public static void main(String[] args) {
int i=0;
System.out.println(i);
}
}


程序2:
public class Hello {
public static void main(String[] args) {
static int i=0;
System.out.println(i);
}
}

程序1可以,程序2为什么就不行了?static int i=0;错在哪里了?
如果这样写又可以
public class Hello {
static int i=0;
public static void main(String[] args) {
System.out.println(i);
}
}
请大家帮忙,谢谢!!
...全文
972 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
taolei 2005-09-28
  • 打赏
  • 举报
回复
在C语言的函数里,是可以有static变量的,它的生存空间跟外部的static相同,在堆上。但只限于该函数内使用。个人认识没多大用处,而且使代码难于理解。大概java也是出于这个原因,没有提供这个功能。
taoyuming 2005-09-28
  • 打赏
  • 举报
回复
我觉得首先 局部变量声明不能使用可以应用于实例变量的多数修饰符 唯一可以应用于局部变量的修饰符是final.所以把static用于局部变量是不对的. 还有就是static的变量和方法是属于类的.
eagle4510 2005-09-27
  • 打赏
  • 举报
回复
我觉得这个理由太迁强
cn_lijia 2005-09-27
  • 打赏
  • 举报
回复
搂主已经说的很清楚了阿 为什么还不结贴?
Maple99 2005-09-27
  • 打赏
  • 举报
回复
static是不属于方法的,是属于一个类的,
是在类加载的时候执行的(也就是初始化),
而方法则是在类实例化的时候才开始执行,
你在方法里定义static当然行不通了
另楼主应该注意,初始化和实例化的区别
Mark_MaoHUA 2005-09-27
  • 打赏
  • 举报
回复
我认为static变量的作用范围是在程序生命周期内存在的,方法它只是在调用的时候临时存在的,
我认为static变量定义在方法中用一个比喻是:大脚穿小鞋,配不上
thumb3344 2005-09-27
  • 打赏
  • 举报
回复
static是成员变量及方法的修饰符,是属于类本身的数据字段,在加载类时就已经初始化,为内存中保存.在方法体内声明的只是局部临时变量,当方法体结束后,这些临时变量会自动销毁,释放缓存空间,所以用static来修饰临时变量,是说不过去的!


//已经很清楚了吧,
yanxiazhiqiu 2005-09-27
  • 打赏
  • 举报
回复
“类层次”?!好概念!
wangqm0629 2005-09-27
  • 打赏
  • 举报
回复
static是类层次的东西,当然在main中定义static int i=0;是错误的
wlmmlw 2005-09-27
  • 打赏
  • 举报
回复
public class Hello {
public static void main(String[] args) {
static int i=0; //Illegal modifier for parameter i;
//only final is permitted.
System.out.println(i);
}
}

---初学者
jiaxiang131 2005-09-27
  • 打赏
  • 举报
回复
在程序启动的时候要将所有的static变量初始化,你写在方法中JDK可能会看不到这个东东;再说没有人像你那么用的O。
terencecgj 2005-09-27
  • 打赏
  • 举报
回复
俺一般就直接不用
:)
bevin1010 2005-09-27
  • 打赏
  • 举报
回复 1
static是成员变量及方法的修饰符,是属于类本身的数据字段,在加载类时就已经初始化,为内存中保存.在方法体内声明的只是局部临时变量,当方法体结束后,这些临时变量会自动销毁,释放缓存空间,所以用static来修饰临时变量,是说不过去的!
wanghao233 2005-09-27
  • 打赏
  • 举报
回复
是不是是因为static修饰的变量是静态变量的原因啊?
静态变量的定义。
wanghao233 2005-09-27
  • 打赏
  • 举报
回复
我只知道static可以修饰成员变量和方法。也就是
class xxx{
static int iii;
static ccc(){
...}}
这样的。具体为什么也没想过,等哪位解释解释吧

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧