标签:Java 变量 外部 简介 匿名 方法 final 赋值
在Java编程中,final是大家常用的一个修饰符。该修饰符的英文字面意思就是最终的, 那我们从字面意思可以了解到被final修饰的类,方法或者变量即是最终的一个状态。
final修饰符的解释:
1.修饰类 : 该类不可被继承。
2.修饰方法: 该方法不可被子类重写。
3.修饰变量: 该变量必须在初始化的时候赋值,而且一旦赋值后不可被修改。
赋值的方式可以在1.定义变量的时候赋值;2.在初始化块的时候赋值 3.在类的构造方法中复制。
public class Test{
// 在定义变量的时候赋值
private final int a = 10;
private final int b;
// 在初始化块中赋值
{
b = 100;
}
private final int c;
// 在构造方法中赋值
public Test() {
c = 10;
}
}
还有一个重要知识点:
在一个方法中,如果在局部类或匿名类中引用外部方法的变量,该变量必须是final修饰的。
原因:
在class编译过程中,外部方法对应的类和局部类或匿名类分别编译成了两个class文件。那么在方法的运行过程中,如果外部方法运营结束,外部方法中声明的变量则会被回收掉,这时候如果局部类或匿名类中引用的外部方法的变量的代码位置还没有运行到的话,就会出现变量找不到的情况,访问到了一个不存在的变量。所以JVM则会拷贝一份内部类中引用的外部方法的变量作为局部类或匿名类的成员变量,这样局部类或匿名类就可以访问这个拷贝后的成员变量,而不会出现变量不存在的问题,延长了这个变量的生命周期。 将外部方法的局部变量复制成为局部类或匿名类的成员变量时,要保证变量是一样的,也就是说如果局部类或匿名类修改了这个变量,外部方法对应的也会修改, 如何解决这个问题? 解决方式就是将这个变量设置为final, 这个变量设置为final后,则不可以被修改,也就保证了外部方法和局部类或匿名类中的变量的一致性。
标签:Java,变量,外部,简介,匿名,方法,final,赋值 来源: https://blog.csdn.net/wjzkiss/article/details/117394803
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。