static修饰的类成为静态类,静态类中只能包含静态成员(被static修饰的字段、属性、方法),不能被实例化,不能被继承;非静态中可以包含静态成员。
static用来修饰类或类的成员,这时不需要创建实例就能访问(而且不能实例化),在被调用的时候自动实例化,且在内存中产生一个实例。当含有静态成员的非静态类实例化出对象后,这些对象公用这些静态成员,通过类名或对象名都能访问它们。方法为类名.成员。
静态方法里只能调用静态方法。
修饰方法内部的静态变量:
我们的代码都是从硬盘加载到内存中才能运行的,在内存中主要分为三个区域,来存放我们的代码,分别是堆、栈和静态存储区。堆中存放的是代码中的引用类型变量,如类的实例、数组等;栈中存放的是代码中的值类型,如整型、浮点型、布尔型等;静态存储区中存放静态变量和全局变量、常亮。
整个程序运行时,代码都是共用静态存储区中的静态变量的,例如定义存款余额为静态变量,同一个银行卡号,无论你是在银行取钱、在ATM机取钱,还是网银消费,用的都是这个静态的余额。
所以,方法内部的静态变量,执行完静态变量值不消失,再次执行此对象的方法时,值仍存在,它不是在堆和栈中分配的,是在静态区非配的, 这是与局部变量最大的区别。