分析&回答
是引用不能变,即对象的指向不能变,但引用的对象即引用里的值是可以变得,因为它又没有用final修饰。
基本数据类型的值是不能更改的
比如:final int a=1;a=2;
那肯定编译也过不了,因为a是final修饰的不可改变;a原来指向1,后来指向2;a的指向变了。
引用类型的值是能更改的
比如:final int[] arr= {1,2,3}; arr[0]=2;
这种是可以的。因为arr的指向并没有变 只不过它里边的值可以变。
反思&扩展
final 修饰的变量什么时候赋值?
- final 修饰成员变量是在实例初始化的时候被赋值的。
- final static int a = 1; //准备阶段赋值
- final static Object c = new Object(); //初始化阶阶段赋值
喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!