看你如何使用final变量了
final变量如果使用在某个函数中,那么他的生命周期将至多为该函数的生命周期。
如果成为一个class或者interface的field,概念就不太一样了,一般在此应用中会与static合用(interface中fields自动加上static)代表一种类型的全局作用域范围,只要还拥有该类或者接口的对象,field就不会消失。第二个问题有点奇怪,不是最明白意思,
一个方法中的局部变量完全可以访问定义该方法的class中的field而无关乎其是任何修饰(包括private,protected,public,final,static),但是当类field与局部变量名称冲突时,希望引用类field就必须加上this关键字(this.field),如果是static field就必须引用class name(ClassName.field)来调用所谓的全局field,不过在面向对象的概念里最好不要有所谓的全局变量的概念。@.@||~
final变量如果使用在某个函数中,那么他的生命周期将至多为该函数的生命周期。
如果成为一个class或者interface的field,概念就不太一样了,一般在此应用中会与static合用(interface中fields自动加上static)代表一种类型的全局作用域范围,只要还拥有该类或者接口的对象,field就不会消失。第二个问题有点奇怪,不是最明白意思,
一个方法中的局部变量完全可以访问定义该方法的class中的field而无关乎其是任何修饰(包括private,protected,public,final,static),但是当类field与局部变量名称冲突时,希望引用类field就必须加上this关键字(this.field),如果是static field就必须引用class name(ClassName.field)来调用所谓的全局field,不过在面向对象的概念里最好不要有所谓的全局变量的概念。@.@||~
----------------------------------------------------------------------
因为方法中的final变量是一个编译时常量, 而内部类在编译时需要确定所有变量的值, 所以只能使用编译时常量, 即方法中的final变量.