static修饰的属于类本身,没有static修饰的属于实例。
创建类时,static修饰的成员存放在堆内存中的permanent代,permanent代存放类的信息,如类中的static的成员:
class a
{
static int n = 4;
public static void main(String args[])
{
a i = null;
System.out.println(i.n); //输出4
}
}
以上语法不太好,最好访问static成员时用类名.成员名。
局部变量不可以用static修饰,局部变量存在于方法栈,随着方法的运行与结束而产生与销毁。
static成员如方法不能访问非static成员如field,并且this引用和super不允许出现在static方法中。
方法中访问field时,如访问的是实例field省略了前面的this,如访问的是static field省略了前面的类名。
类的构造器前不能加static。