zyf4005
2016-04-23 08:41
采纳率: 78.3%
浏览 1.6k
已采纳

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 2016-04-23 09:25
    已采纳

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • Decade_try 2016-04-23 08:56

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

    评论
    解决 无用
    打赏 举报
  • 穆瑾轩 2016-11-23 16:42

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题