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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张少威 中级黑马   /  2012-6-4 12:37  /  1212 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    final使得被修饰的变量"不变",但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义:引用本身的不变,和引用指向的对象不变。
1
@Test
2 public void test02() {
3     final StringBuffer strbuf01 = new StringBuffer("0000");
4     final StringBuffer strbuf02 = new StringBuffer("1111");
5     strbuf01 = strbuf02;    //无法通过编译
6     strbuf01.append("2222");    //可以通过编译
7 }

以上代码验证:
    final只对引用的“值”(也即它所指向的那个对象的内存地址)有效,它迫使引用只能指向初始指向的那个对象,改变它的指向会导致编译期错误。至于它所指向的对象的变化,final是不负责的。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 理解得很好~

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马