Java中static关键词

2020-06-12  本文已影响0人  小圆圈Belen
特点:

1、static是一个修饰符,用于修饰成员变量、成员函数。
2、static修饰的成员被所有的对象共享。
3、static优先于对象存在,因为static的成员随着类的加载就已经存在。
4、static修饰的成员多了一种调用方式,可以直接被类名所调用。

static修饰变量

static变量也称为静态变量,静态变量和非静态变量(成员变量)的区别:

1、是否共享
静态变量被所有对象共享,在内存中只有一个副本,在类初次加载的时候才会初始化;
成员变量是对象所特有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
注:
由于静态变量是所有对象共享的,所以当某个对象对静态变量值进行修改并赋值后,会改变这个静态变量的值,之后的对象调用该静态变量时,其值为改变后的值。


image.png image.png

如果不想被修改该静态变量的值,那么我们可以使用final在关键字进行修饰。


image.png

2、生命周期
静态变量随着类的加载而存在随着类的消失而消失;
成员变量随着对象的创建而存在随着对象的回收而释放。

3、调用方式
静态变量可以被对象调用,也可以用类名调用(为了清晰还是推荐用类名调用);
成员变量只能被对象调用。

static修饰方法

1、static修饰成员方法最大的作用,就是可以使用"类名.方法名"的方式操作方法,这样就避免了先要new出对象的繁琐和资源消耗。

静态成员方法和成员方法的区别

1、调用方式
静态方法可以采用类名.静态方法名 和 对象.静态方法名 这两种方式进行调用;
非静态方法只能使用对象.非静态方法名 这种方式进行调用。
2、访问权限
静态方法可以调用静态方法;
非静态方法可以调用静态方法和非静态方法。
原因:在内存当中先有静态内存,之后才有非静态内容。


image.png
image.png

static修饰代码块

static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

优点:优化代码块

栗子:
未使用static修饰代码块:


image.png

isBornBoomer是用来这个人是否是1946-1964年出生的,而每次isBornBoomer被调用的时候,都会生成startDate和birthDate两个对象,造成了空间浪费。
使用static修饰代码块:


image.png
上一篇下一篇

猜你喜欢

热点阅读