-
final是java语言中的一个关键字。
-
final表示最终的,不可变的。
-
final修饰的变量?
final修饰的局部变量,一旦赋值,不能重新赋值。
-
final修饰的方法?
final修饰的方法无法被覆盖,被重写。
-
final修饰的类?
final修饰的类无法继承
-
final控制不了能不能调用的问题,final修饰的表示最后的,不能变的,不能改的。
-
final修饰的变量,如果这个变量是一个“引用”,该引用只能指向一个对象,并且它只能永远指向该对象,无法再指向其它对象。并且在改方法执行过程中,该引用指向对象之后,该对象不会被垃圾回收器回收,直到当前方法结束,才会释放空间。
虽然final的引用指向对象A之后,不能再重新指向对象B,但是对象A内部的数据可以被修改。
-
final修饰的实例变量,系统不管赋默认值,要求程序员必须手动赋值。实例变量在构造方法执行的过程中赋值。(new的时候赋值)
public class FinalTest01 { public static void main(String[] args) { } } class User{ final double height = 1.8; final double weight; public User() { this.weight = 80; } }这个手动赋值,在变量后面赋值可以,如以上代码中给height变量赋值,在构造方法中赋值也可以,如给weight赋值。
final修饰的实例变量一般添加static修饰。static final联合修饰的变量称之为“常量”,常量名建议全部大写,每个单词之间采用下划线衔接。
public class FinalTest01 { public static void main(String[] args) { } } class Chinese{ //姓名,对象不一样姓名不一样 String name; //身份证号每个人也不一样 String idCard; //国家的值是一个固定的值 //实例变量采用了final修饰,说明该变量值不会随着对象的变化而变化, //该实例变量前应该添加static关键字,变为静态的,存储在方法区,节省内存空间。 static final String COUNTRY = "中国"; }实际上常量和静态变量一样,区别在于:常量的值不能变。
常量和静态变量,都是存储在方法区,并且都是在类加载时初始化。
常量一般都是公共的:public。



