【一道面试题】使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- final关键字可以修饰类、方法和属性(局部的和全局的都可以)。
- final修饰类时;该类不能被继承:
public final class Test{
System.out.println(…);
}
ps:final类中的所有成员方法都会隐式的被指定为final的。 - final修饰方法时:代表该方法不能被重写。同时注意,如果父类中的方法被final修饰,并且是private的,那么子类中可以写同名的方法,相当于重新定义了一个方法,不再报cannot override final method错误。
- final修饰变量时:这里就是重要的点了。
被final修饰的变量相当于定义了一个常量,如果是一个基本数据类型的变量,那么这个变量的值就定了,不能再更改了;如果是一个引用数据类型的变量,该变量存的是一个内存地址,那么该地址就不能再改变了,但是该内存地址指向的对象可以改变的。`
但是地址指向的对象可以改变: