这种问题论坛有很多人发了,你可以---在论坛logo下输入关键字搜索
[color=Red]是引用不能变,但是引用所指向的对象是可以变得[/color]
因为对于[color=Blue]引用类型的变量而言,他保存的仅仅是一个引用[/color],
[color=Red]final修饰的只能保证这个引用所引用的地址不会改变,即只要一直引用同一个对象,但是这个对象完全可以发生改变[/color]
我们用程序来说明这一点:[code=java]package cn.itcast.heima
import java.util.Arrays;
class Person
{
private int age;
//无参构造方器
public Person(){}
//有参构造方器
public Person(int age)
{
this.age = age;
}
//age属性的setter、getter方法
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return this.age;
}
}
public class Demo
{
public static void main(String[] args)
{
//final修饰数组变量,iArr是一个引用变量
final int[] iArr = {5, 6, 12, 9};
System.out.println(Arrays.toString(iArr));
//对数组元素进行排序,合法
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
//对数组元素赋值,合法
iArr[2] = -8;
System.out.println(Arrays.toString(iArr));
//下面语句对iArr重新赋值,非法
iArr = null;
//final修饰Person变量,p是一个引用变量
final Person p = new Person(45);
//改变Person对象的age属性,合法
p.setAge(23);
System.out.println(p.getAge());
//下面语句对p重新赋值,非法
//p = null;
}
}[/code]您也可以参考这个帖子了解更多的内容
[url]http://bbs.itheima.com/thread-268-1-1.html[/url] |