初级回答:
final修饰的值不能改变。
中级回答:
final可以修饰在变量上。
final可以修饰在方法上。
final可以修饰在类上。
高级回答:
final是修饰符,类似于public、private这种的修饰符号。
final是关键字,类似于static等关键字,关键字是不可以当做变量名称、方法名、类名的,如图。
final修饰在变量上分为基本数据类型和引用数据类型两种情况。
1、final修饰在基本数据类型例如String、int上,那么他们的值是不可以改变的。如图。
2、final修饰在引用数据类型例如对象上,那么他的属性值可以变,但是对象值不能变,就是属性可以随意赋值,但是不可以将一个对象进行赋值。如图。
3、final修饰在方法上不可以被重写,例如父类有final修饰的方法,那么子类不可以重写这个方法,现在new一个父类Person写两个方法,一个被final修饰,一个不被final修饰,再写一个子类Student继承Person类,然后重写两个方法,如图。
4、final修饰在类上不能被继承,现在我们把final修饰在父类Person上,然后使用子类Studnet继承它,如图。
隐藏知识点
使用final修饰的变量、方法、类等使用的时候效率比较高,因为不需要去二次寻址了,调用的时候效率比较高,下面我们进行一个测试,我们使用两个for循环,循环10亿10亿次,循环中调用变量的长度,如图;
我们可以看到,在使用final修饰的变量,调用10亿10亿次,时间在1秒内,而调用不使用final修饰的变量的时候时间大约在两秒,这是大量测试过的不是偶然结果,为什么用两个for循环就是因为执行太快一个for循环看不出差距,两个for循环刚刚可以看出差距。