首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

final润色引用型变量

2013-07-16 
final修饰引用型变量class Dog{String namepublic Dog{this.namename}}class Test{public static void

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"是可以运行的。

热点排行