黑马程序员技术交流社区
标题:
关于局部内部类访问final局部变量的分析
[打印本页]
作者:
huyang936
时间:
2015-1-30 20:38
标题:
关于局部内部类访问final局部变量的分析
class Outer
{
int x = 1;
void method()
{
int y = 3; //局部内部类访问局部变量时,局部变量前必须用final修饰.
//原因:局部变量存储在栈内存中,而栈内存的最大特点是用完立即消失,所以要加final延长此局部变量的生命周期以便和局部内部类的生命周期相同
//同样是延长生命周期,但不能用static修饰,因为static根本不能修饰局部变量,所以只能用final修饰
//【问题是:】这样没用final也可以
//解决:JDK1.8后默认在局部内部类的局部变量前加上了final
class Inner //局部内部类
{
void function()
{
System.out.println(y);
}
}
new Inner().function();
}
}
class InnerClassDemo
{
public static void main(String[] args)
{
System.out.println("Hello the InnerClassDemo.");
new Outer().method();
}
}
复制代码
作者:
466273082
时间:
2015-1-30 22:00
谢谢分享......
作者:
466273082
时间:
2015-1-30 22:13
对了,你可以将那个局部变量先采用Final修饰,然后在将final取消,你看看结果,你就明白了
作者:
huyang936
时间:
2015-1-31 07:31
466273082 发表于 2015-1-30 22:13
对了,你可以将那个局部变量先采用Final修饰,然后在将final取消,你看看结果,你就明白了 ...
以上结果,都是试过了的结果,问老师,老师说是JDK1.8自己加的final
作者:
冷遇
时间:
2015-1-31 09:46
豁然开朗啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2