星海

Java 基础 · 单选题 · 第 3 题

Java 后端开发面试 · 第 3 题

用 final 修饰一个引用类型的局部变量后,下列说法正确的是?

  1. A该变量指向的对象从此变为不可变对象,任何字段都不能再修改
  2. B该变量会被放进方法区的常量池,所有线程共享同一份拷贝
  3. C该变量允许被重新赋值一次,第二次赋值时才会编译报错
  4. D该变量不能再指向别的对象,但对象内部的状态仍然可以修改

答案

D D. 该变量不能再指向别的对象,但对象内部的状态仍然可以修改

解析

final 限制的是变量本身只能赋值一次,对引用类型来说就是「指向不能变」,对象内容不受影响。例如 final List 仍然可以 add 元素。真正的不可变对象要靠类的设计来保证:字段私有且 final、不提供修改方法、防御性拷贝,比如 String 和 record。

在线刷这套题:即时判分、错题本、闪卡复习,不用登录就能练。