Java 面向对象编程基础 Static关键字(Day 09)

static方法是没有this的方法.
通过类本身来调用static方法
在类中置入static方法, 就可以访问其他的static方法和static域——达到全局方法作用

(一)静态变量

使用:

(1) 所有该类对象的该属性都一样时使用

(2) static方法是类级别的, 不管实例对象各属性值(实例变量值)是多少 (比如置为null),都不影响static方法的调用(如让Chinese Lisi = null; 但Lisi仍有国籍China,可访问到该静态变量)

(3) 类级别的: 在类加载时就写入方法区; 只有一份而可以多次、多对象对它进行访问; 先于对象就存在

(二)静态方法

静态数据存放于代码区, 类加载时即开辟空间/写入, 有“共享”性质

  1. 语法——static决定对变量/方法的访问方式:

​ (1)有static: 类名.方法名(实参列表)

​ (2)无static: 引用.方法名(实参列表) (即new一个对象, 通过对象访问)

  1. 何时需要设置为静态方法?

    (1) 这个动作不需要对象的参与

    (2) 所有对象执行这个动作时产生的结果一样时,提升为static

  2. 使用

    (1) static无this: 静态方法不能直接访问实例数据(非static的变量/方法), 需要一个对象来完成非实例数据的访问

    (2) 但我们大多数方法都定义为实例方法( 一般都需要对象参与/ 一般结果不同)

    (3) -> 大多数“工具类”中的方法都是静态方法 :)

(三)静态代码块

  1. 怎么用——语法格式:

    static{
        java语句;
    }
    
  1. 何时用——完成一些要求在类加载的时刻执行的代码/完成预备工作(准备工具)

    e.g. 生成日志、初始化连接池、解析XML配置文件……

  2. 何时执行——

    • 类加载时
    • 仅执行一次
    • 一个类中可定义多个
    • 有顺序(上->下)
  3. 对应还有「实例代码块」(非常少用)

    {
        java语句;
    }
    
    • 对象初始化时机,对象创建时---构造函数执行之前,可多个,有顺序

你可能感兴趣的:(Java 面向对象编程基础 Static关键字(Day 09))