static方法是没有this的方法.
通过类本身来调用static方法
在类中置入static方法, 就可以访问其他的static方法和static域——达到全局方法作用
(一)静态变量
使用:
(1) 所有该类对象的该属性都一样时使用
(2) static方法是类级别的, 不管实例对象各属性值(实例变量值)是多少 (比如置为null),都不影响static方法的调用(如让Chinese Lisi = null; 但Lisi仍有国籍China,可访问到该静态变量)
(3) 类级别的: 在类加载时就写入方法区; 只有一份而可以多次、多对象对它进行访问; 先于对象就存在
(二)静态方法
静态数据存放于代码区, 类加载时即开辟空间/写入, 有“共享”性质
- 语法——static决定对变量/方法的访问方式:
(1)有static: 类名.方法名(实参列表)
(2)无static: 引用.方法名(实参列表)
(即new一个对象, 通过对象访问)
-
何时需要设置为静态方法?
(1) 这个动作不需要对象的参与
(2) 所有对象执行这个动作时产生的结果一样时,提升为static
-
使用
(1) static无this: 静态方法不能直接访问实例数据(非static的变量/方法), 需要一个对象来完成非实例数据的访问
(2) 但我们大多数方法都定义为实例方法( 一般都需要对象参与/ 一般结果不同)
(3) -> 大多数“工具类”中的方法都是静态方法 :)
(三)静态代码块
-
怎么用——语法格式:
static{ java语句; }
-
何时用——完成一些要求在类加载的时刻执行的代码/完成预备工作(准备工具)
e.g. 生成日志、初始化连接池、解析XML配置文件……
-
何时执行——
- 类加载时
- 仅执行一次
- 一个类中可定义多个
- 有顺序(上->下)
-
对应还有「实例代码块」(非常少用)
{ java语句; }
- 对象初始化时机,对象创建时---构造函数执行之前,可多个,有顺序