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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,同学们帮忙解答下

13 个回复

倒序浏览
你这么一说我也想知道啊。 怎么没有大神回答啊。期待中。。。。
回复 使用道具 举报
static 应该只能修饰成员变量,不能修饰局部变量吧。
回复 使用道具 举报
很简单,你见过局部被静态修饰的吗
回复 使用道具 举报
局部内部类可以被static 修饰。。。
回复 使用道具 举报
本帖最后由 我是隔壁老王呀 于 2015-6-18 10:04 编辑

   内部类可以简化看成具有独特属性的变量,局部内部类,那是局部变凉了。而 static修饰的是类变量,作用于整个类空间,局部变量是有作用范围的,不能出了范围还能有效,所以也就不能用static修饰了。
回复 使用道具 举报
shuaiqi_P_D 发表于 2015-6-17 23:58
局部内部类可以被static 修饰。。。

你确定?
   无论从作用域范围,还是java的类加载机制,局部变量都是不能被static修饰的。除非你是其他的语言,有另外一套语法规范,例如c/c++,他可以,但是却和java是不同的语言。
回复 使用道具 举报
因为这是Java语法的规定。没有为什么
回复 使用道具 举报
static是类的。变量是对象。当然不能。
回复 使用道具 举报
楼上说的简单明了
回复 使用道具 举报
又涨知识了
回复 使用道具 举报
本帖最后由 edithe 于 2015-6-18 21:36 编辑

成员内部类是可以用static修饰的,你说的是局部内部类吧
我来说下吧,要了解这个问题,我们首先得知道类加载的过程
我们写的代码是存在硬盘的,运行的时候,先进行类加载,jvm会解析代码,如果发现有static修饰则会存在方法区,
成员内部类相当于外部类的成员变量,可以用static修饰
局部内部类是相当于局部变量,你因该知道局部变量是不能用static修饰的吧(生命周期不一致,存放位置不一致)
回复 使用道具 举报
宏博 中级黑马 2016-10-14 18:46:32
13#
本帖最后由 宏博 于 2016-10-14 20:02 编辑

java类加载顺序,首先加载类,执行static成员初始化,接下来执行对象的创建。也就是说加载非静态成员是在创建对象以后。静态局部内部类要加载首先要加载其所在的局部,也就是在创建对象以后,但是静态局部内部类因为是静态的,所以它的加载是在创建对象以前,这样就矛盾了,所以不能创建局部静态内部类。
此回帖为本人宏博结合类的加载原理自创,如果转载请声明
回复 使用道具 举报
shuaiqi_P_D 发表于 2015-6-17 23:58
局部内部类可以被static 修饰。。。

不可以的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马