黑马程序员技术交流社区

标题: 关于static小疑问 [打印本页]

作者: zhangfengg    时间: 2016-9-19 00:20
标题: 关于static小疑问
static为什么不能修饰局部变量啊,书上只说会报错,还是不太懂,请大神 赐教
作者: 钓鱼王    时间: 2016-9-19 11:18
钓鱼王前来答题。
希望有帮助。
static是说明这个东西是属于整个类的
而局部变量的作用域只能在他所属的{}之内。不可能是属于类或对象的。
所以矛盾,故static不能修饰局部变量

public class Test {
public static int a=1;//成员变量,允许
public static void main(String[] args) {
  static int b=1;//错误
}

}
作者: chenyihan    时间: 2016-9-19 12:17
static修饰的是随着类的加载而加载,局部变量在方法中,存在于栈内存,随着对象的调用而调用,所以不能修饰
作者: 小东先森    时间: 2016-9-19 12:39
static修饰的变量具有两个特点
第一 随着类的加载而加载
第二 变量是隶属于类的
Java是面向对象的语言,方法运行结束后会有方法弹栈的行为
你如果在方法中定义一个静态的局部变量,它不可能同时属于类,又随着方法改变而改变,矛盾。
所以static在Java语言中是不能定义局部变量的。
但在c/c++中  是面向过程的语言,是可以定义局部静态变量的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2