【面试题1】
使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
一、首先是本题延伸的知识点:
- java中的变量分为: 基本数据类型和引用数据类型
- final关键字可以修饰:类、方法、变量
-
修饰类:该类不能被继承。
-
修饰方法:该方法不能被重写。
-
修饰变量:如果修饰的变量时基本数据类型,则该变量为常量,值不能改变;如果修饰的变量是引用数据类型,则该变量存的内存地址是不能改变了,但是内存地址存的内容是可以改变的。
二、解答本题
首先题目已经说明是修饰引用变量,所以答案就是:引用变量(存的地址)不能变,引用变量的对象的内容可以改变。
例如:
final StringBuffer s=new StringBuffer("ssstable");
//s=new Stringbuffer("a"); //编译错误,因为s的地址不能被改变。
s.append(" win"); //编译通过,因为s的地址对应的内容可以改变。