修饰成员变量
修饰类的属性,让其成为类的成员属性
在创建对象时,非static变量保存在堆中,每个对象独立存在,非static变量有各自的取值,不会相互影响;而static变量则保存在静态存储区,只有在第一次创建某个类的对象时会初始化,后期创建该类的其他对象时不会重新初始化,所有对象共享一个static变量,作用相当于全局变量
修饰成员方法
修饰类的方法,让其成为类的成员方法
相比于修饰成员变量,修饰成员方法对于数据的存储没有多大变化,其最大的作用是,不需要创建对象就可以调用类中的方法,即使用“类名.方法名”的方式操作方法,避免了先要new出对象的繁琐和资源消耗
但static方法中不能使用非static变量和方法
静态块
当初始化static修饰的变量时,可以将它们统一放在一个以static开始,用花括号包裹起来的块状语句中,使程序更规整(需理解对象的初始化过程)
静态导包
不同于非static导入,采用static导入包后,在不与当前类的方法名冲突的情况下,无需使用“类名.方法名”的方法去调用类方法了,直接可以采用”方法名”去调用类方法
1 | /* PrintHelper.java文件 */ |
注意事项
static的特点:
- 随着类的加载而被加载
- 优先于对象存在
- 被所有对象共享
static的生命周期:
- 类变量周期生命最长,随着类的消失而消失
- 实例变量生命周期比类变量短,它是随着对象的消失而消失
static方法:
- 静态的方法只能访问静态的成员
- 非静态得方法即能访问静态得成员(成员变量,成员方法)又能访问非静态得成员
- 局部变量不能被static修饰
- 静态得方法中是不可以定义this、super关键字的,因为静态优先于对象存在
参考文章
《Java编程思想》