【static】
<1>static成员变量存储在内存data segment区域,不是存放在堆中。
<2>静态成员变量属于整个类,任何一个对象都可以访问这个值;如果没有对象,可以用类访问,格式为:类.静态成员变量。
【静态变量与非静态变量】
静态成员变量只存在一份(不论new多少个对象,也不管用不用到该变量,它属于整个类),存放在内存的数据区;非静态成员变量每new一个对象就产生一次,在内存的堆中。
【Exception】
public class A{
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对象才能运行,那样对编译器而言负担过重)。
【静态方法与动态方法】
静态方法不是针对某一对象调用,没有对象一样可以调用(不出现对象名字也可以访问);非静态方法针对某一对象调用。