黑马程序员技术交流社区

标题: 被问到的一道题:被final修饰的一个引用变量问题 [打印本页]

作者: SYAD    时间: 2015-9-1 23:06
标题: 被问到的一道题:被final修饰的一个引用变量问题
被问到的一道题:被final修饰的一个引用变量,是引用不变,还是对象不变?

作者: 殷俊    时间: 2015-9-1 23:12
引用不变,但是内容可以变
作者: michael_wlq    时间: 2015-9-1 23:27
引用不变,引用本身就是对象的地址
作者: lion_good    时间: 2015-9-2 10:55
引用不能变,其引用的对象本身可以变,比如:
  1. import org.junit.Assert;
  2. public class Person {
  3.     public static void main(String[] args) {
  4.         Person p1 = new Person("Bob", 20);
  5.         Person p2 = new Person("Jobs", 34);
  6.         final Person pFinal = p1;
  7.         Assert.assertTrue(pFinal.age == 20);
  8.         p1.setAge(25);
  9.         Assert.assertTrue(pFinal.age == 25);
  10.         pFinal.setAge(30);
  11.         Assert.assertTrue(pFinal.age == 30);
  12.         //pFinal=p2; //ERROR
  13.     }
  14.     private String name;
  15.     private int age;
  16.     public Person(String name, int age) {
  17.         this.age = age;
  18.         this.name = name;
  19.     }
  20.     public int getAge() {
  21.         return age;
  22.     }
  23.     public void setAge(int age) {
  24.         this.age = age;
  25.     }
  26.     public String getName() {
  27.         return name;
  28.     }
  29.     public void setName(String name) {
  30.         this.name = name;
  31.     }
  32. }
复制代码

作者: boboyuwu    时间: 2015-9-2 11:18
那个引用变量不能变,只能永远指向一个值  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2