1、什么是final关键字?
final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。
2、怎样命名?
final修饰的变量是一个常量,常量的名称要全部大写,而且单词之间要用下划线分隔开,被final修饰的变量让程序变得更加严谨,给一些固定的数据起一些阅读性较强的名称。
3、什么是final常量?
被final修饰的成员变量是一个常量,不能被修改,该变量只能被赋值一次,而且被声明为final的变量必须在声明时给定初值。
一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。
4、什么是final方法?
final也可以声明成员方法。代表这个成员方法是一个最终方法,不可以被子类重写,但是可以被子类重载。
如果你认为一个成员方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。
5、什么是final类?
使用final来修饰的类叫作final类。final类通常功能是完整的,它们不能被继承。Java中有许多类是final的,譬如String, Interger以及其他包装类。
6、被final修饰的引用变量所指向的对象内容可变吗?
在上面提到被final修饰的引用变量一旦初始化赋值之后就不能再指向其他的对象,那么该引用变量指向的对象的内容可变吗?看下面这个例子:
public class Test {
public static void main(String[] args) {
final MyClass myClass = new MyClass();
System.out.println(++myClass.i);
}
}
class MyClass {
public int i = 0;
}
这段代码可以顺利编译通过并且有输出结果,输出结果为1。这说明引用变量被final修饰之后,虽然不能再指向其他对象,但是它指向的对象的内容是可变的。