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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yangyinhui 中级黑马   /  2013-4-5 20:11  /  1227 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static void main(String[] args) {
  2.                  final Printer p = new Printer();
  3.                
  4.                 new Thread(){
  5.                         public void run() {
  6.                                 while(true)
  7.                                         try {
  8.                                                 p.print1();
  9.                                         } catch(Exception e) {
  10.                                                 e.printStackTrace();       
  11.                                         }
  12.                         }       
  13.                 }.start();
复制代码
final Printer p = new Printer();这段代码前面为什么要加final?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

3 个回复

倒序浏览
当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。    其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。下面这段代码演示了这一点:

2.jpg (62.7 KB, 下载次数: 0)

具体代码

具体代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
匿名内部类定义在了类的局部,只能访问被final修饰的变量
回复 使用道具 举报
2楼回答的天南海北啊!无语!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马