A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhangfengg 中级黑马   /  2016-9-19 00:20  /  675 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

static为什么不能修饰局部变量啊,书上只说会报错,还是不太懂,请大神 赐教

3 个回复

倒序浏览
钓鱼王前来答题。
希望有帮助。
static是说明这个东西是属于整个类的
而局部变量的作用域只能在他所属的{}之内。不可能是属于类或对象的。
所以矛盾,故static不能修饰局部变量

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

}
回复 使用道具 举报
static修饰的是随着类的加载而加载,局部变量在方法中,存在于栈内存,随着对象的调用而调用,所以不能修饰
回复 使用道具 举报
static修饰的变量具有两个特点
第一 随着类的加载而加载
第二 变量是隶属于类的
Java是面向对象的语言,方法运行结束后会有方法弹栈的行为
你如果在方法中定义一个静态的局部变量,它不可能同时属于类,又随着方法改变而改变,矛盾。
所以static在Java语言中是不能定义局部变量的。
但在c/c++中  是面向过程的语言,是可以定义局部静态变量的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马