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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,同学们帮忙解答下

13 个回复

正序浏览
shuaiqi_P_D 发表于 2015-6-17 23:58
局部内部类可以被static 修饰。。。

不可以的
回复 使用道具 举报
宏博 中级黑马 2016-10-14 18:46:32
13#
本帖最后由 宏博 于 2016-10-14 20:02 编辑

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

成员内部类是可以用static修饰的,你说的是局部内部类吧
我来说下吧,要了解这个问题,我们首先得知道类加载的过程
我们写的代码是存在硬盘的,运行的时候,先进行类加载,jvm会解析代码,如果发现有static修饰则会存在方法区,
成员内部类相当于外部类的成员变量,可以用static修饰
局部内部类是相当于局部变量,你因该知道局部变量是不能用static修饰的吧(生命周期不一致,存放位置不一致)
回复 使用道具 举报
又涨知识了
回复 使用道具 举报
楼上说的简单明了
回复 使用道具 举报
static是类的。变量是对象。当然不能。
回复 使用道具 举报
因为这是Java语法的规定。没有为什么
回复 使用道具 举报
shuaiqi_P_D 发表于 2015-6-17 23:58
局部内部类可以被static 修饰。。。

你确定?
   无论从作用域范围,还是java的类加载机制,局部变量都是不能被static修饰的。除非你是其他的语言,有另外一套语法规范,例如c/c++,他可以,但是却和java是不同的语言。
回复 使用道具 举报
本帖最后由 我是隔壁老王呀 于 2015-6-18 10:04 编辑

   内部类可以简化看成具有独特属性的变量,局部内部类,那是局部变凉了。而 static修饰的是类变量,作用于整个类空间,局部变量是有作用范围的,不能出了范围还能有效,所以也就不能用static修饰了。
回复 使用道具 举报
局部内部类可以被static 修饰。。。
回复 使用道具 举报
很简单,你见过局部被静态修饰的吗
回复 使用道具 举报
static 应该只能修饰成员变量,不能修饰局部变量吧。
回复 使用道具 举报
你这么一说我也想知道啊。 怎么没有大神回答啊。期待中。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马