【static】spa
<1>static成员变量存储在内存data segment区域,不是存放在堆中。对象
<2>静态成员变量属于整个类,任何一个对象均可以访问这个值;若是没有对象,能够用类访问,格式为:类.静态成员变量。内存
【静态变量与非静态变量】编译器
静态成员变量只存在一份(不论new多少个对象,也无论用不用到该变量,它属于整个类),存放在内存的数据区;非静态成员变量每new一个对象就产生一次,在内存的堆中。io
【Exception】编译
public class A{class
int i;变量
}引用
public static void main(String[] args){程序
int i = 0;
}
编译运行后会报错:non-static variable i cannot be referenced from a static context[非静态变量i不能在静态上下文引用]
【分析】静态上下文指的是static main,main方法须要执行的话不须要new一个对象出来(若是不设置为static,那么意味着在代码区找到主程序入口时,还须要new对象才能运行,那样对编译器而言负担太重)。
【静态方法与动态方法】
静态方法不是针对某一对象调用,没有对象同样能够调用(不出现对象名字也能够访问);非静态方法针对某一对象调用。