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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秋天-10 中级黑马   /  2015-4-25 21:03  /  1350 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. 写出程序结果
  2. class TD
  3. {
  4.         int y=6;
  5.         class Inner
  6.         {
  7.                 static int y=3;  
  8.                 void show()
  9.                 {
  10.                         System.out.println(y);
  11.                 }
  12.         }
  13. }
  14. class TC
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                 TD.Inner ti=new TD().new Inner();
  19.                 ti.show();
  20.         }
  21. }
复制代码

20 个回复

倒序浏览
会报错,static int y=3;这句话会出错,具体原因转来的,你看下吧。
     因为内部类是非静态的,除了要依靠外部类实例外,还要依赖内部类实例,而静态变量是不需要构建类实例的,两者是相矛盾的,而final类型的变量可以离开类实例存活一段时间的。

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报 2 0
chniccs 发表于 2015-4-25 21:39
会报错,static int y=3;这句话会出错,具体原因转来的,你看下吧。
     因为内部类是非静态的,除了要依 ...

学习了                        
回复 使用道具 举报
输出结果为3,这题主要考察变量的作用域问题,可以简单这样理解一个大括号{}里的变量在这个括号里哪里都可以调用,大括号里嵌套的变量只能在里面调用,不能再外面调用,也就是说,小范围的可以调用大范围的,大范围的不能够i调用小范围的.
回复 使用道具 举报
好的,谢谢,学习了
回复 使用道具 举报
无法编译,内部类除非是静态的,否则无法持有静态成员
回复 使用道具 举报
我也学习到啦
回复 使用道具 举报
无法编译,原因以上已经给出。
回复 使用道具 举报
打印输出结果是3
回复 使用道具 举报
考的不应该 是静态的问题吧 ; 如果是也是有点高端了;内部类都来了;内部类要想访问外面的变量;外部类的变量必须用final修饰;内部类才能访问
回复 使用道具 举报
当内部类定义了静态成员时,该内部类也必须是静态的
回复 使用道具 举报
学习了。1楼是正确的
回复 使用道具 举报
学习了!!!
回复 使用道具 举报
学习了!
回复 使用道具 举报
结果怎么样呢
回复 使用道具 举报
Zack 中级黑马 2015-4-27 17:32:49
16#
这是面试题还是基础测试题
回复 使用道具 举报
面试结果怎么样啊!
回复 使用道具 举报
学习了,赞一个
回复 使用道具 举报
ddddk 中级黑马 2015-4-27 20:19:55
19#
chniccs 发表于 2015-4-25 21:39
会报错,static int y=3;这句话会出错,具体原因转来的,你看下吧。
     因为内部类是非静态的,除了要依 ...

基础视频里提过这个,没有印象了,现在又重新学习了。
回复 使用道具 举报
看下,记得基础视频里有,但是我也忘记了,也去复习下
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马