java 内部类与static

来源:互联网 发布:网络或路径不可用 编辑:程序博客网 时间:2024/05/17 06:57

public class MyStaticClass {
static int a;
public static void main(String args[]){
System.out.println(a);
}

}

输出为0

public class MyStaticClass {
class inner{
static int a;
}


public static void main(String args[]){
System.out.println((new MyStaticClass()).new inner().a);
}
}

输出报错:The field a cannot be declared static in a non-static inner type, unless initialized with a constant expression

public class MyStaticClass {
class inner{
static final int a = 100;
}


public static void main(String args[]){
System.out.println((new MyStaticClass()).new inner().a);
}
}

输出为100

public class MyStaticClass {
void myMethod(){
static final int a = 0;
}


public static void main(String args[]){
System.out.println("Null");
}
}

输出为Null 但仍然是错误。

public class MyStaticClass {
int myMethod(){
class Class1{
//static int b = 1000;
static final int a = 1000;
}
return new Class1().a;
}


public static void main(String args[]){
System.out.println(new MyStaticClass().myMethod());
}
}

输出1000。注释部分仍然是错误。

也就是说方法体内是不可以直接用static修饰变量的。方法体内的内部类以及类里的内部类里可以修饰,但必须常量,而且必须赋值

方法体内的变量是不能用public,protected,private static修饰的,但可以用final定义。

0 0