黑马程序员技术交流社区

标题: 求帮助!谢谢~ [打印本页]

作者: 黑马_孙万春    时间: 2011-11-29 09:14
标题: 求帮助!谢谢~
本帖最后由 黑马_孙万春 于 2011-11-30 08:58 编辑

为什么方法里的内部类要访问类外的局部变量时,局部变量必须要用final修饰呢?

作者: 强子    时间: 2011-11-29 09:19
因为内部类虽然在方法内部,但是它有自己的存活时间,而方法调用完之后里面的局部变量就消失了
而用final修饰其值不能更改,相当于在内部类中创建了一个相同的变量,这个变量就不会随着方法的结束而消失了
作者: 刘涛    时间: 2011-11-29 09:20
因为内部类虽然在方法内部,但是它有自己的存活时间,而方法调用完之后里面的局部变量就消失了
而用final修饰其值不能更改,相当于在内部类中创建了一个相同的变量,这个变量就不会随着方法的结束而消失了
顶  但看文字是不能完全理解的
要看实例程序
作者: 黑马_孙万春    时间: 2011-11-29 09:33
那我还想问一下,方法的存活时间和内部类的存活时间有关系吗?
作者: 刘涛    时间: 2011-11-29 09:52
黑马_孙万春 发表于 2011-11-29 09:33
那我还想问一下,方法的存活时间和内部类的存活时间有关系吗?

与外部类的属性/ 方法并列的。
作者: 刘涛    时间: 2011-11-29 10:02
刘涛 发表于 2011-11-29 09:52
与外部类的属性/ 方法并列的。

我再解释一下 :
final关键字修饰的是常量,
常量的值是不可改变的,
常量是变量中的一个特例,
这样就不难理解为什么要用final修饰了吧。
作者: 李晓斌    时间: 2011-11-29 10:51
final关键字的特点:
1.可以修饰类、函数、变量。
2.被final修饰的类不可以被继承。为了避免被继承,被子类复写功能。
3.被final修饰的方法不可以被复写。
4.被final修饰的变量是一个常量,只能赋值一次,既可以修饰成员变量,又可以修饰局部变量。(例如:final int x=3;则x终身为3了)
5.当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字。方便于阅读,而这个值不需要改变,所以加上final修饰。(final double pai=3.14;)作为常量:常量的书写规范所有字母都大写,如果由多个单词组成。单词间通过下划线连接。(如:π=PI或者MY_PI)
6.内部类定义在类中的局部位置上时只能访问该局部被final修饰的局部变量。(知道即可)

这是我在听老毕预热班时做的关于final关键字的笔记,希望对lz有用




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