| 本帖最后由 杨永峰 于 2012-6-4 11:42 编辑 
 private、public是标示所修饰东东的被访问的权限,由于方法区中的变量的权限是确定的,其有效范围是所在方法的内部,只有这一种形式,所以变量只有不带任何权限修饰符的这种默认方式。复制代码class PrvTest{
        public static void main(String[] args){
                //private int x = 0;///静态方法中,编译错误:非法表达式的开始
                //public int x = 0;///静态方法中,编译错误:非法表达式的开始
                int y = 0;
                final int X = 0;
                //static int z = 1;///静态方法中,编译错误:非法表达式的开始
                System.out.println(X+z);
                Unstatic us = new Unstatic();
                us.field();
        }
        
}
class Unstatic{
        public void field(){
                //private int a = 0;///非静态方法中,编译错误:非法表达式的开始
                //public int a = 0;///非静态方法中,编译错误:非法表达式的开始
                int b = 0;
                final int A = 0;
                //static int c = 1;///非静态方法中,编译错误:非法表达式的开始
                System.out.println(A+c);
        }
} 
static 是用于标示所修饰东东是否存储于 方法区中,由于定义方法的时候,方法所属的内存在哪儿开辟已经确定了,所以在方法内部的变量是否在方法区存储也已经确定了,不允许再次定义也就可以接受了。
 final 用于标示所修饰东东的和所指向具体值的绑定关系,自然可以在方法中修饰局部变量。
 总之,我们只能按照编译器已定的规格来办事,不这样就会挂掉。
 |