本帖最后由 杨永峰 于 2012-6-4 11:42 编辑  
- 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);
 
 -         }
 
 - } 
 
  复制代码 private、public是标示所修饰东东的被访问的权限,由于方法区中的变量的权限是确定的,其有效范围是所在方法的内部,只有这一种形式,所以变量只有不带任何权限修饰符的这种默认方式。 
static 是用于标示所修饰东东是否存储于 方法区中,由于定义方法的时候,方法所属的内存在哪儿开辟已经确定了,所以在方法内部的变量是否在方法区存储也已经确定了,不允许再次定义也就可以接受了。 
final 用于标示所修饰东东的和所指向具体值的绑定关系,自然可以在方法中修饰局部变量。 
总之,我们只能按照编译器已定的规格来办事,不这样就会挂掉。 |