被static关键字修饰的变量叫静态变量,也就是所谓的类变量。
不被static关键字修饰的变量叫成员变量。
没有“被static关键字修饰的成员变量”这一说法。
比如说有一个类Dog;
属性:clolor,狗狗可以有好多颜色;
munberOfLegs =4 每只狗狗只有4条腿,这个就应该是静态的;
静态的属性不依赖于类的存在而存在,简单说,你可以定义
Dog dog1 = new Dog();
Dog dog2 = new Dog();
Dog dog3 = new Dog();
这里定义了三条狗狗,狗狗的颜色依赖于类本身,即dog1,dog2,dog3;三条狗狗可以有不同的颜色;
而狗狗的腿的数量不依赖于dog1,dog2,dog3;所有的狗狗都是4条腿
用static修饰的成员变量可以直接通过类访问,可以不通过类的实例。
比如有个类A,A下有个static的成员变量int b;那么A.b就可以访问到b的值了。当然也可以通过类的实例,比如 A a = new A(); a.b;
举个例子:
package November;
public class StaticTest {
public static int count = 0;
public void count() {
public static int n = 0;//这里是不允许用static的,非静态的的方法里不可以定义静态的变量
}
public static void main(String[] args) {
StaticTest.count++;
new StaticTest().count++;
System.out.println(count);
}
}
如例子中的main方法,最终打印出来的将是2,static的变量或者方法是属于类的,你可以new出一个对象,就只可以直接通过类名直接调用它,也可以new出一个对象再调用,没有什么区别,但是本质上还是类直接调用。