目录
static:是Java中的一个关键字,表示 静态的。在Java中,被static修饰的成员叫做 静态成员。静态成员 不属于某个具体的对象,而是属于 类,因此也可以称之为 类成员。
1. static修饰的成员变量
若一个成员变量被static修饰,则这个成员变量叫做 静态成员变量。此时 这个成员变量就属于 类的,不属于对象。
1.1 静态成员变量的访问
下面写一个Dog类,在Dog类中用 this 来访问 静态成员变量,this代表的是当前对象的引用
可见 this访问非静态成员变量name可以正常访问,但访问kind出现警告。显示静态成员应该使用Dog.kind来访问。
由此可以得出,静态成员是属于 类的,不属于 对象,应该使用 类名 来访问静态成员变量。
1.2 静态成员变量的特点
(1)静态成员变量属于 类 的,不属于具体的对象,是所有对象共享的。
(2)静态成员变量随着类的加载被创建,随着类的销毁而销毁。
(3)静态成员变量的存储空间不在对象的存储空间中,而在 方法区。、
(4)可以通过对象和类名来访问 静态成员变量,但前者会存在异常,一般都用类名来访问。
2.static修饰静态成员方法
static修饰的成员方法叫 静态成员方法,是 类 的方法。
2.1 静态成员方法的调用
静态成员方法也应该使用 类名 来调用,否则也会出现警告。
2.2 静态成员方法 调用 静态成员方法
在静态成员方法中 可以直接调用静态成员方法
2.3 静态成员方法 调用 非静态成员方法
在静态成员方法中不能 直接 调用 非静态成员方法,需要实例化对象来调用。
2.4 静态成员方法 访问 非静态成员变量
在静态成员方法中,可以直接访问静态成员变量,不能直接 访问非静态成员变量,需要先实例化对象,通过对象的引用来访问 非静态成员变量。
3.静态成员变量的初始化
若在类中定义了静态成员变量,则静态成员变量的初始化有两种方式:就地初始化、静态代码块初始化。
3.1 就地初始化
意思就是 在定义静态成员变量的同时 就直接将其初始化。
3.2 静态代码块初始化
也可以写一个 静态代码块 将静态成员变量进行初始化 。
【静态代码块特点】
(1)静态代码块是程序运行时第一个被执行的,且只被执行一次。
(2)若有多个静态代码块,则会按定义顺序依次执行。