本帖最后由 杨永峰 于 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 用于标示所修饰东东的和所指向具体值的绑定关系,自然可以在方法中修饰局部变量。
总之,我们只能按照编译器已定的规格来办事,不这样就会挂掉。 |