本帖最后由 刘文超 于 2013-1-3 11:23 编辑
引用不能改变了,对象可以变:
final的“不可变”不是对象里面的属性值不可以改变、而是final这个引用指向对象o就不可以再取指向其它对象o1了。对于这种说法、看我代码:- package org.qyx.online;
- public class TestFinal {
- public static void main(String[] args) {
- final Person p1=new Person("张三");
- p1.setName("李四");
- System.out.println(p1.getName());//此时打印出李四,说明对象的属性是可以被改变的哦、
-
- //p1=new Person("王五");
-
- //当引用改变指向对象的时候,在eclipse下会提示错误
- //The final local variable p1 cannot be assigned. It must be blank and not using a compound assignment
- //所以”final修饰的变量是不可以被改变“中的“改变”二字说的是引用的指向不变,
- //和基础类型一样,只是栈中存放的不可以被改变,实际堆中的对象是允许改变的、
- }
- }
- class Person{
- private String name;
- public Person(String name) {
- this.name = name;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
-
- }
复制代码 代码可已看出,final修饰的,可以将对象属性张三改成李四,但不能让final的指向另一个王五啦 |