A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

被问到的一道题:被final修饰的一个引用变量,是引用不变,还是对象不变?

4 个回复

倒序浏览
引用不变,但是内容可以变
回复 使用道具 举报
引用不变,引用本身就是对象的地址
回复 使用道具 举报
引用不能变,其引用的对象本身可以变,比如:
  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. }
复制代码
回复 使用道具 举报
那个引用变量不能变,只能永远指向一个值  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马