在类中,用static声明的成员变量为静态成员变量,或者叫做:类属性,类变量。
1.它为该类的公用变量,属于类,被该类的所有实例变量共享,在类被载入时被显示初始化。
2.对于该类的所有对象来说,static成员变量只有一份。在该类的所有对象共享。
3.可以使用“对象.类属性”来调用。不过,一般都是用“类名.类属性”。
4.staic变量置于方法区中!用static声明的方法为静态方法
1.不需要对象,就可以调用(类名.方法名)
2.在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
package theChildOgfGod.bjxy.oop2;
public class Student {
// 静态的数据
String name;
int id;
static int ss;
public static void printSS() {
//name = "徐子峰";报错,不行,不可以调用!!!!!
System.out.println();
}
// 动态的行为
public void study() {
printSS(); //可以调用,
System.out.println(name + "在学习");
}
public void sayHello(String sname) {
System.out.println(name + "向" + sname + "说:同志你辛苦了!");
}
}
package theChildOgfGod.bjxy.oop2;
public class Test {
public static void main(String[] args) {
Student.ss = 323;
Student.printSS();
Student s1 = new Student();
}
}
静态初始化块
- 如果希望加载后,对整个类进行某些初始化操作,可以使用static初始化块。
- 是在类初始化时执行,不是在创建对象时执行。
- 静态初始化块中不能访问非static成员。
- 执行顺序
1.上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止。
public class TestStaticBlock{
static {
System.out.println("此处,可执行类的初始化工作!");
}
public static void main(String[] args){
System.out.println("main方法中的第一句");
}
}