在Java方法性能中使用final关键字?

Ste*_*n D 3 java compiler-construction variables performance final

final方法参数中的使用是否允许编译器或运行时环境更快地工作?例如,如果您有一个变量要传递给您知道不会被修改并按原样使用的方法,那么声明它final是否更有效?

示例:第一种方法应该比第二种方法更快

public int isLargerAfterTripledFaster(int num, final int limit) {
    num *= 3;
    return (num > limit);
}

public int isLargerAfterTripled(int num, int limit) {
    num *= 3;
    return (num > limit);
}
Run Code Online (Sandbox Code Playgroud)

如果我可以肯定我永远不想在这里传递一个可修改的变量,我应该采用这种方法吗?

das*_*ght 8

从理论上讲,声明一个参数final是不会有所作为:编译器允许足够的智慧弄清楚,你的方法不改变limit参数,优化代码,它产生如同参数被宣布final没有实际申报.

通过声明方法参数,您将获得的最大区别final是能够在匿名类中引用该参数.

另一个有用的结果是,在您知道保持该参数不变的情况下维护代码的人是您有意识的决定,而不是巧合.

  • 哪个编译器?你能用源备份你的答案吗? (2认同)