当一个变量需要初始化加载或者经常调用的时候,可以加上static!
static 关键字修饰成员,包括成员变量和方法,被修饰的成员变量和方法叫做类成员,其中成员变量叫类成员,成员方法叫类方法
使用static修饰的叫类成员,没有使用的是实例成员;
被修饰的成员具有以下特点:
随着类的加载而加载;优先于对象存在;被所有对象所共有;可以直接被类名调用。
注意事项:
静态方法只能访问静态成员;静态方法中不可以使用this,super关键字;主方法是静态的(所以可以直接被类名调用)。
/**
* Created by Administrator on 2018/9/30.
* 下面是创建普通实例变量、方法以及类变量和方法
*/
public class Student {
String name="zhzang";
static int age=3;
public void putong(){
//普通方法可以调用类方法以及类成员;
leichengyuan();
System.out.println(name+age);
}
public static void leichengyuan(){
//类方法不可以调用实例方法以及实例成员;
System.out.println(age);
}
}
//调用运行结果,实例方法需要对象名.方法名调用;类方法是用类名.方法名调用;
public static void main(String[] args) {
Student student=new Student();
student.putong();
Student.leichengyuan();
}
区别总结:
1、所有该类对象共享类方法和实例方法
2、类方法使用类名.方法名调用;实例方法使用对象名.方法名调用
3、实例方法可以调用类方法以及类变量,类方法不能直接调用实例方法以及变量,要访问他们必须使用对象引用;
4、类方法不能使用this关键字,因为么用this的实例供使用;
static静态代码块
通常用于为类的代码块做初始化运行
/**
* Created by Administrator on 2018/9/30.
*/
public class Student {
private static int age;// 静态变量
private int high;// 实例变量
static {
Student.age = 3;
System.out.println(age);
Student student = new Student();
student.te();
student.high= 110;
System.out.println(student.high);
}
static {
Student.age = 10;
System.out.println(age);
}
public void te() {
System.out.println("ceshisihishi...");
}
/**运行结果
* 3
* ceshisihishi...
* 110
* 10
*/
}
//调用运行代码块
public static void main(String[] args) {
Student student=new Student();
}