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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马_孙万春 黑马帝   /  2011-11-29 09:14  /  1745 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马_孙万春 于 2011-11-30 08:58 编辑

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

评分

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

查看全部评分

6 个回复

倒序浏览
强子 黑马帝 2011-11-29 09:19:03
沙发
因为内部类虽然在方法内部,但是它有自己的存活时间,而方法调用完之后里面的局部变量就消失了
而用final修饰其值不能更改,相当于在内部类中创建了一个相同的变量,这个变量就不会随着方法的结束而消失了

评分

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

查看全部评分

回复 使用道具 举报
刘涛 黑马帝 2011-11-29 09:20:29
藤椅
因为内部类虽然在方法内部,但是它有自己的存活时间,而方法调用完之后里面的局部变量就消失了
而用final修饰其值不能更改,相当于在内部类中创建了一个相同的变量,这个变量就不会随着方法的结束而消失了
顶  但看文字是不能完全理解的
要看实例程序

评分

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

查看全部评分

回复 使用道具 举报
那我还想问一下,方法的存活时间和内部类的存活时间有关系吗?
回复 使用道具 举报
刘涛 黑马帝 2011-11-29 09:52:14
报纸
黑马_孙万春 发表于 2011-11-29 09:33
那我还想问一下,方法的存活时间和内部类的存活时间有关系吗?

与外部类的属性/ 方法并列的。
回复 使用道具 举报
刘涛 黑马帝 2011-11-29 10:02:31
地板
刘涛 发表于 2011-11-29 09:52
与外部类的属性/ 方法并列的。

我再解释一下 :
final关键字修饰的是常量,
常量的值是不可改变的,
常量是变量中的一个特例,
这样就不难理解为什么要用final修饰了吧。
回复 使用道具 举报
李晓斌 黑马帝 2011-11-29 10:51:45
7#
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有用

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马