黑马程序员技术交流社区

标题: 黑马入学考试题 [打印本页]

作者: 倦鸟识山    时间: 2015-10-11 16:15
标题: 黑马入学考试题
今天看到一个学长发的入学考试题,在此想问问各位看官,这道题你会吗?

方法中的内部类能不能访问方法中的局部变量,为什么?

答案:一般不能。因为内部类的生命周期和方法中的局部变量是不一样。内部类是一个类,存储在堆中,只有当对该类的引用消失时,内部类才会消亡。而方法的局部变量是存储在堆栈中的,当调用结束时就会退栈,即在内存中这个属性就消失了。因此,内部类的生命周期长于方法中局部变量的生命周期,内部类可能会调用到已经消失的属性,因此内部类不能访问方法中的局部变量。

拓展:注意万事没有绝对。
特殊情况:解决方法中内部类无法访问方法中局部变量的问题的方法,就是在局部变量前加修饰符final,此时局部变量就会存在堆中,生命周期跟工程的生命周期是一样的,此时内部类就可以访问方法中的局部变量。
作者: 15001162522    时间: 2015-10-11 17:40
好高深~~~  绕口令似的给我绕晕了
作者: 莫盛强    时间: 2015-10-11 18:07
对的,想用就加final
作者: yuyucoo    时间: 2015-10-11 19:23
学习了,看着有点复杂呢
作者: ageof    时间: 2015-10-11 19:29
是不是所有考试题都得全部答对才能通过面试啊?
如果你面试被刷了,怎么办?
前面的流程又重新走一遍???
作者: dai2686779    时间: 2015-10-11 19:33
拓展长知识了。
作者: 倦鸟识山    时间: 2015-10-12 13:19
15001162522 发表于 2015-10-11 17:40
好高深~~~  绕口令似的给我绕晕了

说的跟真的似得
作者: 倦鸟识山    时间: 2015-10-12 13:20
yuyucoo 发表于 2015-10-11 19:23
学习了,看着有点复杂呢

答案其实就是每段的第一句,后面是分析
作者: 倦鸟识山    时间: 2015-10-12 13:22
ageof 发表于 2015-10-11 19:29
是不是所有考试题都得全部答对才能通过面试啊?
如果你面试被刷了,怎么办?
前面的流程又重新走一遍??? ...

我感觉应该是准备好了再去面试 再来一遍没什么必要
作者: 小鹿    时间: 2015-10-12 13:40
要注意细节!
作者: ningbo_1115    时间: 2015-10-13 08:48
今天又记住了一个知识点
作者: liuqianfly    时间: 2015-10-13 09:35
学习啦!
作者: 海狮    时间: 2015-10-13 14:13
好复杂的样子- -
作者: 蜉杰辰蝣    时间: 2015-10-13 15:35
这么长的答案。。。
作者: ash午夜阳光    时间: 2015-10-13 16:08
长见识了
作者: 迷茫不堪的年纪    时间: 2015-10-13 17:15
开始写的其实笔记中有的, 生命周期的不同,一个被调用就消失,一个随着主的消失而消失。 过拓展的不错,加修饰的final 同寿
作者: 看海的管家    时间: 2015-10-13 22:28
学习了,,,,
作者: michael_wlq    时间: 2015-10-14 00:03
知识点还是要记得牢才行啊
作者: 斑点狗    时间: 2015-10-14 00:05
不错,我也考的就是这道,回答的很全面
作者: llyy    时间: 2015-10-14 08:32
加了final不是就存在了方法常量池内  延长了生命周期吗  
作者: 谢光智    时间: 2015-10-14 09:10
赞…
——这是一条可爱的小尾巴…⊙▽⊙
作者: dushine2000    时间: 2015-10-14 09:22
前面的知道  加fianl还真不知道
作者: shilu    时间: 2015-10-14 10:17
谢谢分享
作者: QiChen    时间: 2015-10-14 12:43
这个还是知道的,之前看视频的时候了解的,谢谢分享!
作者: 1312564637    时间: 2015-10-14 13:15
可以,但是你要在局部变量上加final,,如果你用的是jdk1.7版本的就没事了
作者: ksh    时间: 2015-10-14 21:19
涨姿势了,试验过,就是没有想过,这一下就明白了
作者: silencea    时间: 2015-10-14 21:33
谢谢分享!
作者: 仨儿先森    时间: 2015-10-14 22:15
我就看看不说话




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