标题: 求解释啊 [打印本页] 作者: 程有愿 时间: 2012-7-4 08:58 标题: 求解释啊 class Out
{ int x=4;
void methd(final int a)
{
class Inner
{ final int y=5;
void show(){
System.out.println("a="+a);
}
}
new Inner().show();
}
}
public class InnerClassDemon1 {
public static void main(String[] args){
Out out=new Out();
out.methd(6);
out.methd(7);
}
},为什么还能out.methd(7)呢,虽说老师视频理解了是栈的问题,但是还是不太明白求解释..谢谢作者: 唐辉辉 时间: 2012-7-4 09:08
out.methd(6); 当执行这句话的时候,method(final int a) 中的 final int a 才生成, 他的作用范围为本函数,在本函数内是不能再给它赋值。本函数执行完会销毁作者: 王明明 时间: 2012-7-4 09:11
你是说定义了final 变量的a 为什么还能改变吧?
这个你可以理解为 a 你传进去什么值 就是什么
作用于这个方法 方法一结束 也就关闭了
所以你再传7的时候 a 就是7作者: 韦念欣 时间: 2012-7-4 09:12
执行了out.methd(6)之后,是可以在执行out.methd(7)
你的方法参数中有final int a,是指限制了a在这个方法内是不能改变的而已。
也就是说:不管你传什么值,这个值不能在方法中改变。但你可以多次调用该方法,多次传值。作者: 杨朔 时间: 2012-7-4 12:48
第一次传值和第二次传值没有关系,final的值是不可改变的,但是只限于这个方法内部,第二次调用就已经重新执行了。作者: 邵阳 时间: 2012-7-4 12:53
class Out
{ int x=4;
void methd(final int a)
{
a++ //这时都不行,你对比着理解吧
class Inner
{ final int y=5;
void show(){
System.out.println("a="+a);
}
}
new Inner().show();
}
}
public class InnerClassDemon1 {
public static void main(String[] args){
Out out=new Out();
out.methd(6);
out.methd(7);