Java中,使用Final修饰一个变量,是引用不能变,还是引用对象不能变?
是引用对象的地址不能变,引用变量所指的对象的内容可以改变。
final变量永远指向这个对象,是一个常量指针,而不是指向常量的指针。
比如:
final StringBuffer sb=new StringBuffer(“abc”);
对sb重新赋值 sb=new StringBuffer(“cde”);
会出现编译错误,被final修饰的变量是不能重新赋值的;
但是 sb.append(“ced”);
是可以编译通过的。
Final作为一个修饰符:
1、可以修饰类、变量、方法
2、被final修饰的类不能被继承。防止子类继承重写父类方法
3、被final修饰的方法不能被重写
4、被final修饰的变量是一个常量只能被赋值一次。(既可以修饰成员变量, 也可以修饰局部变量)