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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Demo15
  2. {
  3. public static void main(String[] args)
  4. {
  5. new Wai().method();

  6. }
  7. }

  8. class Wai
  9. {
  10. void method()
  11. {
  12. final int y = 1;// 为什么要final修饰?关联体现在什么地方?
  13. class Nei
  14. {
  15. void function()
  16. {
  17. System.out.println(y);
  18. }

  19. }
  20. new Nei().function();
  21. }
  22. }
复制代码
为什么要final修饰?关联体现在什么地方?
static 的话就体现在那个方法区里面而这个呢??有关联吗?

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
使用final可以防止任何继承类修改它的意义和实现,编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
如果外部类定义了final变量,内部类就不能够去修改变量的值,程序运行结束这个变量的值还是1.

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

回复 使用道具 举报
用final的意义在于,本身局部变量只在方法内,也就是栈中,所以其生命周期也就是在方法内,当方法结束资源自动释放,而内部类对象的生命周期则是在堆中,并且没有引用它(强引用和软引用)并且虚拟机内存不足时,就会调用垃圾收集器来收集这些对象,所以为了内部类可以使用局部变量,需要加上final来增加生命周期
回复 使用道具 举报
王阳 发表于 2013-1-15 23:23
用final的意义在于,本身局部变量只在方法内,也就是栈中,所以其生命周期也就是在方法内,当方法结束资源自动 ...

更正一个地方,引用即可了,上面写的有点不恰当,少了个弱引用,至于虚引用没太大意义。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马