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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张龙欢 中级黑马   /  2013-5-6 23:43  /  1653 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张龙欢 于 2013-5-8 18:37 编辑

我们在使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

7 个回复

倒序浏览
可以有多个引入,但引入的对象不能改变:
例子:
public class FinalTest {
        public static void main(String[] args) {
                final Student s1 = new Student();               
                Student s2 = s1;
                s2.setAge("cc");                // 设置无效;
                System.out.println(s1.getAge());               
                System.out.println(s2.getAge());
        }
}

class Student {
        private String name;
        private String age = "1";
       
        public void setAge(String age) {
                this.age = "aa";
        }
       
        public String getAge() {
                return age;
        }
}

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1

查看全部评分

回复 使用道具 举报
final修饰的变量不能变,如果是对象,里面的东西可以变化的
回复 使用道具 举报
使用final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改
变的。
final StringBuffer a=new StringBuffer("immutable");
a=new StringBuffer("");//这个是不行的
a.append(" broken!");//这个却是可以的

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1

查看全部评分

回复 使用道具 举报
final修饰变量,变量就变成了常量。第一次赋值将成为最终值,无法再次赋值和修改。因为你final修饰的是变量并不是修饰的那个对象中的内容,所以对象中的内容可以更改。
回复 使用道具 举报
何锦权 来自手机 中级黑马 2013-5-7 13:58:59
地板
用final修饰的引用型变量,是指改引用变量的值不变,该值所指向的对象的属性等是可以改变的
回复 使用道具 举报
是指引用不能改变:
final Object obj=new Object();
obj变量不能重新赋值,而obj指向的对象内容是可以改变的。
回复 使用道具 举报
被final修饰的变量将是那个变量的最终值,不能再次被赋值了。但可以调用。被final修饰的方法只能被调用。不能复写。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马