2016-03-01 27 views
-2

我一直认为final变量只能被赋值一次。 有人可以请启发我最后的关键字在这种情况下做什么? 这是否意味着它只在函数返回前才是“最终”?函数中的Java final变量

public void onClick(View view) { 
    final int x = new Random().nextInt(); 
    System.out.println(x); 
} 

输出:

03-01 14:18:25.022: I/System.out(26253): 416604980 
03-01 14:18:25.332: I/System.out(26253): -1080822415 
03-01 14:18:25.522: I/System.out(26253): -170506517 
03-01 14:18:26.982: I/System.out(26253): 1438898132 
03-01 14:18:27.112: I/System.out(26253): 401245673 
+2

它所在的'{'到'}'之间'x'的范围。当您退出该方法时,它不存在。 –

+0

可能重复[Quesions](http://stackoverflow.com/questions/7924452/final-variables-inside-a-method-in-java) – Gopal00005

回答

2

x,作为final局部变量,只能一次分配在其存在的范围内,这是onClick方法的主体。

每次调用该方法都会创建一个新的x变量,该变量只能分配一次。

1

这是一个局部变量,它不单单只final直到方法结束,它只存在,直到方法结束。

在结束时},该变量有资格进行垃圾回收。

1

是的,在这种情况下x是,一旦它得到一个初始随机值的int,该变量不能再修改......

1

这意味着它只能在其寿命期间分配一次,和局部变量的生存期跨越他们所在的方法。

0

有5个invokations或召唤在每个呼叫x变量的定义和分配。变量x是本地的,它在onClick方法的范围内。