static关键字
静态变量(类变量)、静态方法(类方法):static声明的属性或方法。
静态变量/静态方法生命周期和类相同,在整个程序执行期间都有效。它有如下特点:
为该类的公用变量,属于类,被该类的所有实例共享,在类载入时被初始化。
static变量只有一份。
一般用“类名.类变量/方法”来调用。
在static方法中不可直接访问非static的成员。
package Test1;
/**
* 测试Static方法
* Static属性和方法,属于类 方法区
* 其他普通的属性和方法属于对象 堆区
*/
public class TestStatic {
int id; //id
String name; //账户名
static String company = "北京尚学堂";//公司名称
public TestStatic(int id,String name){
this.id = id;
this.name = name;
}
public void Login(){
System.out.println(name);
}
public static void printCompany(){
// Login();静态方法中不能调用非静态成员
System.out.println(company);//company也是静态的
}
public static void main(String[] args) {
TestStatic t = new TestStatic(101,"yeshen");
TestStatic.printCompany();
TestStatic.company = "百战";
TestStatic.printCompany();//只属于类
t.Login();//直属于对象
}
}
静态初始化块
构造方法用于对象的普通属性初始化。
静态初始化块,用于类的初始化操作,初始化静态属性。
在静态初始化块中不能直接访问非static成员。
注意事项
静态初始化块执行顺序(学完继承再看这里):
上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到类的静态初始化块为止。
构造方法执行顺序和上面顺序一样!!