static
是一个静态修饰符,用于修饰成员变量、成员函数。
当成被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。
格式:类名.静态成员
总结:
- 可以直接被类名调用
2.被所有对象共享
3.随着类的加载、类(字节码)消失而消失
4.静态先存在,对象后存在
对象变量(实例变量)和类变量(静态变量)的区别
- 静态变量随着类的加载而存在于方法区中。
- 对象变量随着对象的创建而存在于堆内存里。
- 类变量生命周期长,对象变量生命周期短(随着对象消失而消失)。
注意事项:
- 静态成员只能访问静态成员;
- 非静态方法不仅可以访问静态也可以访问非静态;
- 静态方法中不可出现this;
- 好处:节省了内存空间、直接类名调用
- 弊端:生态周期过长、使用有限制
总结:静态虽好,但是只能访问静态
什么时候使用static
1.static变量:
当多个对象出现共享数据时、使用static修饰该变量。
对象中的非共享数据要定义成非静态的,其存在于堆内存中。
2.static函数:
当方法内部没有访问到非静态数据(对象的特有的数据),那么该方法可以定义成静态的
Arrays.sort();//工具类Arrays里面的方法都是静态的。
static代码块
- 随着类的加载而执行,只执行一次。
- 优先于static方法执行
代码示例:
class Person{
String name;
static{
System.out.println(" ");
}
public static void test(){
System.out.println(" ");
}
}