2 zyf4005 zyf4005 于 2016.04.23 16:41 提问

java中final 变量作为方法的参数?怎么理解?见下面代码

class NiMingLei
{
public static void main(String[] args)
{
Outer out= new Outer();
out.function(7);
out.function(8);
}
}

class Outer
{
static int y=4;
void function(final int a)

{

  class Inter
  {
     void method()
        {
           System.out.println(a);
        }  

    }
  new Inter().method();

}

}

为啥可以编译运行通过:
7
8
不是final a 了吗?不是a的值不能改变了吗?

3个回答

Evankaka
Evankaka   Ds   Rxr 2016.04.23 17:25
已采纳

function里面你就没有更改a啊,out.function(7);
out.function(8);这是两个不同的传入参数了啊

zyf4005
zyf4005 明白了,谢谢啊!
一年多之前 回复
qq_27540925
qq_27540925   2016.04.23 16:56

Java是按值传递的,方法的参数和调用的变量不是同一块地址,调用后还是正常输出7和8。

xiaoxianer321
xiaoxianer321   2016.11.24 00:42

每个方法中的参数,在调用方法的时候都存在栈中,而方法和方法之间的参数(也就是局部变量)之间是互不干扰的,执行完毕时不会保存的。这样调用合情合理。并没有直接对其进行修改

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!