static的本义是静止的。在计算机里就表示静态变量。
在Java中,从内存分析图上可以看到,它与类、常量池放在一个区里:
从图可以看到,普通的方法和对象属性,都在heep里,而static则在方法区里。
static声明的属性或方法:静态变量,又叫类变量)、静态方法(又叫类方法)s
静态变量/静态方法生命周期和类的生命周期相同,在整个程序执行期间都有效。
它有如下特点:
1) 为该类的公用变量,属于类,被该类的所有实例共享,在类载入时被初始化。
2) static 成员变量只有一份。
3)一般用“类名.类属性(又叫类变量,变量=属性)/方法”来调用。
4) 在static方法中不可直接访问非static的成员。
public class TestStatic {int id;String name;static String company = "AP";//这就是定义一个静态变量public TestStatic(int id, String name) {//定义一个对象构造器this.id = id;this.name = name;}public void login(){//定义一个普通的方法System.out.println(name);}public static void printCompany(){ //定义一个静态方法//loign();//静态方法里不能直接调用普通方法System.out.println(company);//在静态方法里可以调用静态变量}public static void main(String[] args) {TestStatic u = new TestStatic (101,"Jason");//定义一个TestStatic的类对象uTestStatic.printCompany();//直接执行类的方法TestStatic.company = "剑桥";//更改类的静态变量的值TestStatic.printCompany();}}