static关键字
static关键字的特点
static静态的,可以修饰成员变量,也可以修饰成员方法。
修饰成员变量,此变量为共享变量,被这个类的所有对象所共享。如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
被静态所修饰的成员,是随着类的加载而加载,优先于对象存在。
被静态所修饰的成员属于类,推荐使用类名调用。当然你可以使用对象名,但是不推荐。
静态修饰的内容一般我们称其为:与类相关的,类成员
static的内存图解
static的注意事项
在静态方法中是没有this关键字的
静态是随着类的加载而加载,this是随着对象的创建而存在。静态比对象先存在。
静态方法只能访问静态的成员变量和静态的成员方法
静态只能访问静态,非静态可以访问静态的也可以访问非静态的
静态变量和成员变量的区别
静态变量 | 成员变量 | |
---|---|---|
所属 | 属于类,所以也称为类变量 | 属于对象,所以也称为实例变量(对象变量) |
内存中位置 | 存储于方法区的静态区 | 存储于堆内存 |
内存出现时间 | 随着类的加载而加载,随着类的消失而消失 | 随着对象的创建而存在,随着对象的消失而消失 |
调用 | 可以通过类名调用,也可以通过对象调用,推荐使用类名调用 | 只能通过对象名调用 |