为什么Java变量不经常被声明为`final`?比较swift中的let关键字

Tho*_*hor 1 java variables final let swift

在swift中,let如果变量在初始化后没有改变,建议用关键字声明变量.我看到很多变量被声明为let.

在java中,我认为关键字final可以起到同样的作用.但是根据我有限的经验,我只看到人们final在极少数情况下声明变量,例如PI.

为什么Java变量不final经常被声明?有什么我想念的吗?

use*_*547 5

在Java中,我应该使用"最后"为参数,当地人甚至当我不就得了?

基本上,对于字段,它很有用,并且还会更改其并发属性.看Java并发:是最终字段(在构造函数中初始化)是线程安全的吗?

但是,对于局部变量和参数,final的值不太清楚.它有一些语义价值,但另一方面,它也可能是噪音

public void foo (final int x, final int y){
    try{
        final int z = x+y;
    }
    catch (final Exception z){
        final String message = "";
        throw new RuntimeException(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

相比

public void foo (int x, int y){
    try{
        int z = x+y;
    }
    catch ( Exception z){
        String message = "";
        throw new RuntimeException(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你有简短的方法(你通常应该有),那么无论如何变量都没有被改变.

因此,一些开发人员更喜欢使用final作为其语义值,而其他开发人员则因为其冗长而不愿使用它.