黑马程序员技术交流社区

标题: 一道面试题 [打印本页]

作者: 秋天-10    时间: 2015-4-25 21:03
标题: 一道面试题
  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. }
复制代码

作者: chniccs    时间: 2015-4-25 21:39
会报错,static int y=3;这句话会出错,具体原因转来的,你看下吧。
     因为内部类是非静态的,除了要依靠外部类实例外,还要依赖内部类实例,而静态变量是不需要构建类实例的,两者是相矛盾的,而final类型的变量可以离开类实例存活一段时间的。
作者: 大兵在海边    时间: 2015-4-26 00:18
chniccs 发表于 2015-4-25 21:39
会报错,static int y=3;这句话会出错,具体原因转来的,你看下吧。
     因为内部类是非静态的,除了要依 ...

学习了                        
作者: 落魄逗比    时间: 2015-4-26 09:34
输出结果为3,这题主要考察变量的作用域问题,可以简单这样理解一个大括号{}里的变量在这个括号里哪里都可以调用,大括号里嵌套的变量只能在里面调用,不能再外面调用,也就是说,小范围的可以调用大范围的,大范围的不能够i调用小范围的.
作者: 秋天-10    时间: 2015-4-26 11:31
好的,谢谢,学习了
作者: sisel    时间: 2015-4-26 11:33
无法编译,内部类除非是静态的,否则无法持有静态成员
作者: yanghaihun    时间: 2015-4-26 20:14
我也学习到啦
作者: fanxia_2007    时间: 2015-4-26 21:12
无法编译,原因以上已经给出。
作者: lostnotes    时间: 2015-4-26 21:54
打印输出结果是3
作者: 纳海百川    时间: 2015-4-26 23:09
考的不应该 是静态的问题吧 ; 如果是也是有点高端了;内部类都来了;内部类要想访问外面的变量;外部类的变量必须用final修饰;内部类才能访问
作者: 穆顺涛    时间: 2015-4-26 23:22
当内部类定义了静态成员时,该内部类也必须是静态的
作者: 旺丶财    时间: 2015-4-27 11:57
学习了。1楼是正确的
作者: 只吃饭不洗碗    时间: 2015-4-27 14:25
学习了!!!
作者: yas丶    时间: 2015-4-27 15:14
学习了!
作者: xizhenqing    时间: 2015-4-27 15:43
结果怎么样呢
作者: Zack    时间: 2015-4-27 17:32
这是面试题还是基础测试题
作者: 牵猪散步    时间: 2015-4-27 17:42
面试结果怎么样啊!
作者: 海带    时间: 2015-4-27 18:31
学习了,赞一个
作者: ddddk    时间: 2015-4-27 20:19
chniccs 发表于 2015-4-25 21:39
会报错,static int y=3;这句话会出错,具体原因转来的,你看下吧。
     因为内部类是非静态的,除了要依 ...

基础视频里提过这个,没有印象了,现在又重新学习了。
作者: 熬夜看书    时间: 2015-4-27 20:43
看下,记得基础视频里有,但是我也忘记了,也去复习下
作者: 匡璐    时间: 2015-4-27 21:35
学习学习定一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2