黑马程序员技术交流社区
标题:
关于内部类,为什么内部类作为局部变量是不能被static修饰
[打印本页]
作者:
ujump
时间:
2015-6-17 22:10
标题:
关于内部类,为什么内部类作为局部变量是不能被static修饰
如题,同学们帮忙解答下
作者:
fyg408224345
时间:
2015-6-17 22:17
你这么一说我也想知道啊。 怎么没有大神回答啊。期待中。。。。
作者:
一口老郭
时间:
2015-6-17 22:26
static 应该只能修饰成员变量,不能修饰局部变量吧。
作者:
林RM
时间:
2015-6-17 23:45
很简单,你见过局部被静态修饰的吗
作者:
shuaiqi_P_D
时间:
2015-6-17 23:58
局部内部类可以被static 修饰。。。
作者:
我是隔壁老王呀
时间:
2015-6-18 09:43
本帖最后由 我是隔壁老王呀 于 2015-6-18 10:04 编辑
内部类可以简化看成具有独特属性的变量,局部内部类,那是局部变凉了。而 static修饰的是类变量,作用于整个类空间,局部变量是有作用范围的,不能出了范围还能有效,所以也就不能用static修饰了。
作者:
我是隔壁老王呀
时间:
2015-6-18 09:46
shuaiqi_P_D 发表于 2015-6-17 23:58
局部内部类可以被static 修饰。。。
你确定?
无论从作用域范围,还是java的类加载机制,局部变量都是不能被static修饰的。除非你是其他的语言,有另外一套语法规范,例如c/c++,他可以,但是却和java是不同的语言。
作者:
guiqulaixi
时间:
2015-6-18 12:06
因为这是Java语法的规定。没有为什么
作者:
YongBao_Summer
时间:
2015-6-18 12:27
static是类的。变量是对象。当然不能。
作者:
lucien_he
时间:
2015-6-18 16:06
楼上说的简单明了
作者:
rose_xiaomei
时间:
2015-6-18 19:45
又涨知识了
作者:
edithe
时间:
2015-6-18 21:34
本帖最后由 edithe 于 2015-6-18 21:36 编辑
成员内部类是可以用static修饰的,你说的是局部内部类吧
我来说下吧,要了解这个问题,我们首先得知道类加载的过程
我们写的代码是存在硬盘的,运行的时候,先进行类加载,jvm会解析代码,如果发现有static修饰则会存在方法区,
成员内部类相当于外部类的成员变量,可以用static修饰
局部内部类是相当于局部变量,你因该知道局部变量是不能用static修饰的吧(生命周期不一致,存放位置不一致)
作者:
宏博
时间:
2016-10-14 18:46
本帖最后由 宏博 于 2016-10-14 20:02 编辑
java类加载顺序,首先加载类,执行static成员初始化,接下来执行对象的创建。也就是说加载非静态成员是在创建对象以后。静态局部内部类要加载首先要加载其所在的局部,也就是在创建对象以后,但是静态局部内部类因为是静态的,所以它的加载是在创建对象以前,这样就矛盾了,所以不能创建局部静态内部类。
此回帖为本人宏博结合类的加载原理自创,如果转载请声明
作者:
麦诗人℃
时间:
2016-10-14 19:28
shuaiqi_P_D 发表于 2015-6-17 23:58
局部内部类可以被static 修饰。。。
不可以的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2