当前位置: 代码迷 >> Eclipse >> final润色引用型变量
  详细解决方案

final润色引用型变量

热度:102   发布时间:2016-04-23 01:19:36.0
final修饰引用型变量
class Dog{
  String name;
  public Dog{
    this.name=name;
  }
}
class Test{
  public static void main(String[] args){
    final Dog dog=new Dog("欧欧");
    dog.name=""美美;
    dog=new Dog("亚亚");
  }
}
我知道dog.name=""美美;是正确的, dog=new Dog("亚亚");是错误的
但是不明白真正的原因,关于对象的引用值和对象的属性值不懂,求大神讲解
final

------解决方案--------------------
final Dog vdog = new Dog("XX");

执行new操作的时候JVM会分配一块内存,用来保存新创建的实例,实例对应的属性值都保存在这块内在中。
给vdog赋值的时候,实际上vdog保存的是这块内存的地址。
final限制的是vdog的值只能是这个内存的地址,不能修改成其他地址,所以再次执行vdog=new Dog("YY")的时候会报错。
final不限制对内存中数据的修改,所以vdog.name="YYY"是可以运行的。
  相关解决方案