Java手记——static

1、static变量

静态变量在内存中只有一个拷贝(节省内存)

在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)

所以一般在需要实现以下两个功能时使用静态变量:

  • [x] 在对象之间共享值时
  • [x] 方便访问变量时

2、static静态方法

静态方法可以直接通过类名调用,任何的实例也都可以调用。

不能用this和super关键字,只能访问所属类的静态成员变量和成员方法。。

静态方法是类内部的一类特殊方法,只有在需要时才将对应的方法声明成静态的,一个类内部的方法一般都是非静态的

了方便方法的调用会声明为static

3、static代码块

独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。

4、static final 修饰成员变量和成员方法

可简单理解为“全局常量”

对于变量,表示一旦给值就不可修改,并且通过类名可以访问。

对于方法,表示不可覆盖,并且可以通过类名直接访问。

5、static静态类

如果一个类要被声明为static的,只有一种情况,就是静态内部类

1.静态内部类跟静态方法一样,只能访问静态的成员变量和方法

2.静态内部类可以声明普通成员变量和方法

3.静态内部类可以单独初始化:

使用场景

  1. 内部类初始化无需实例化外部类;

  2. 当某个类需要接受多个参数进行初始化时,推荐使用静态类Builder构建。

6、import static和import的区别

一般我们导入一个类都用 import com.....ClassName;

而静态导入是这样:import static com.....ClassName.;

这里的多了个static,还有就是类名ClassName后面多了个 . ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用ClassName.方法名 的方式来调用。

同理也可以导入静态变量

你可能感兴趣的:(Java手记——static)