为什么final是Java中局部变量的唯一修饰符?

ani*_*rak 9 java jvm

class Test {

    public static void main(String[] args) {
        private int x = 10;
        public int y = 20;
        protected int z = 30;
        static int w = 40;  
        final int i = 50;
    }
}
Run Code Online (Sandbox Code Playgroud)

只适用修改是最后在这里; 对于其他修饰符,程序会给出编译器错误.这是为什么?请详细解释.

Sto*_*wke 11

简而言之 - 在这种情况下,其他任何修饰语都没有意义.话说一个变量public,private,protected,或static根本没有在一个局部变量,将走出去的范围的上下文中有意义的(并且是垃圾收集)一旦方法退出.这些修饰符用于类字段(和方法),以定义它们的可见性(或者在static它们的范围内).

final 唯一一个在局部变量的上下文中有意义的因为它意味着变量在初始声明后不能被修改,它与访问控制无关.