成都达内科技IT培训中心,专注成都Java培训,成都C++培训,成都3G培训,成都android培训,成都软件测试等高端IT培训,顶级师资授课,真实项目实战,零首付,低押金,名企高薪就业。

   1.finalfinal 对于常量来说,意味着值不能改变,例如 final int i=100。这个i的值永远都是100。但是对于变量来说又不一样,只是标识这个引用不可被改变,例如 final File f=new File("c:\test.txt");那么这个f一定是不能被改变的,如果f本身有方法修改其中的成员变量,例如是否可读,是允许修改的。形象的比 喻:一个女子定义了一个final的老公,这个老公的职业和收入都是允许改变的,只是这个女人不会换老公而已。

    实例解释********

    3)final变量在内部类中的使用

    程序需要在匿名内部类中使用局部变量,则局部变量必须声明为final类型。否则会编译错误。为什么必须声明为final类型呢?这是应为

    对于普通变量而言,它的作用域是停留在该方法内,当方法执行结束,该局部变量也就随之消失,但内部类则可能产生隐式的“闭包”,

    闭包使得局部变量脱离它所在的方法继续存在。

    看下面的例子:

    public class ClosureTest {

    public static void main(String[] args) {

    final String str = "java" ;//定义局部变量

    new Thread(new Runnable(){

    public void run(){

    for(int i=0 ;i<100 ; i ){

    System.out.println(str i);

    try {

    Thread.sleep(100) ;

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    }

    }

    })。start() ;

    }

    }

    程序首先定义了一个局部变量str,当程序main方法执行完成后,str的生命周期就结束了,但是子线程还没有执行结束,而且子线程要

    使用main中的局部变量str,这个时候就扩大了str的作用范围。这个时候如果str没有被修饰为final类型,而可以随便改变,则会引起

    极大的混乱,因此java编译器要求所有的内部类访问的局部变量必须使用final修饰符修饰



[阅读全文...]

挖上一个精彩
挖客给您推荐更多精彩!
挖下一个精彩

这些挖客臭味相投 · · · · · ·


挖客说 · · · · · ·

 

匿名评论
(文明上网,承担一切因您的行为而直接或间接导致的法律责任)

 

 
合作伙伴:   网易科技   赛迪社区   千龙科技   265上网导航   刷刷   动态网站制作指南   煎蛋   新新web2.0   9Fav就喜欢网   Linux桌面中文网   我爱水煮鱼   乐婴网
  天涯海阁   掘图志   cngadget   17Fav   桑林志   91新鲜网   奇事奇物网   搜酷全球   poboo