1.Static:静态,不属于某个对象的,依赖于类
静态变量在静态方法中使用,在对象创建之前已经存在,随着类的加载已经跟随着内存的分配。
static 修饰静态部分,由static修饰代码有如下性质:
- static在jvm分配的static空间中
- static空间分配比较早
- static修饰的方法、属性只能被定义一次
- static修饰的方法、属性不属于当前对象,一般使用类名方式访问,举例如下
public class Bank {//银行类
private String name;//用户名属性
private static int balance = 100000;//公共存款属性
public void withdraw(int money) {//取钱方法
this.name = "黑客";
Bank.balance -= money;//这里用this.balance会有提示黄线,要用类名
}
/*
*注意:静态的方法访问静态的属性
*/
public static int getBalance() {// 静态的方法访问静态的属性!!!!!!!!!
return Bank.balance;
}
}
- 随着类的加载而加载
- 优先于对象的存在
- 随着类的死亡而死亡
注意:
1.静态方法只能调用静态成员,不能调用非静态成员。
2.非静态方法可以调用静态成员,也可以调用非静态成员。
2. 静态与非静态的区别:
- 非静态成员变量又称为实例变量。
静态成员变量又称为类变量。
- 非静态成员变量,随着对象的创建而存在,随着对象的消失而消失。
静态成员变量,随着类的加载而存在,随着类的消失而消失。
- 非静态变量存在于对象堆内存中。
静态变量存在于方法区中。
- 非静态变量只能被对象所调用。
静态变量可以被类名调用,也可以被对象调用。