昨晚12点以后,跟人讨论问题,无意中聊到了final可以修饰的类型以及修饰后所具备的特点,可以详见
java基础问题101问(javaSE阶段知识汇总)
聊到final修饰成员变量和局部变量有什么区别时,只是隐约记得大概,没有十足把握,于是进行论证
先告知论证结果
final修饰成员变量和局部变量
1.都不能被改变,也就是不能被二次赋值。引用类型是地址值不能被改变,对象中的属性可以改变
2.成员变量在声明时必须被赋值,局部变量声明时可以不赋值,当局部变量被第一次赋值以后,不能二次赋值
论证
局部变量补充
final修饰的局部变量,会给人一种延长生命周期的错觉
,这是在方法中有内部类的情况下,因为局部变量在方法调用一次后就死亡了,内部类对象在没有引用指向后才死亡,所以会有内部类对象还在,局部变量已死的情况,这时内部类怎么访问它所在方法的局部变量呢?
实际上是局部变量在方法调用一次后就死亡了,但是final修饰的局部变量会在内部类对象中拷贝一份,所以内部类对象访问的是拷贝给它的副本,已经成为它的成员了。
可以看下别人的博客解释,链接,要是没有耐心就直接看我的总结