static关键字的作用

1、static是Java语言中的一个关键字,单词本身的含义是静态的。

2、使用static修饰的成员为静态成员,是属于某个类的;而不使用static修饰的成员为实例成员,是属于类的每个对象的。

3、一个类的成员包括变量、方法、构造方法、代码块和内部类。static可以修饰除构造方法外的所有成员。

1、static修饰变量:

static属性属于这个类所有,即由该类创建的所有对象共享同一个static属性。static变量和非static变量都是成员变量。主要区别是:

1)在内存中的份数不同

不管有多少对象,static变量只有一份。对于每个对象,实例变量都会有单独的一份。

2)在内存中的位置不同

静态变量在方法区中,实例变量在堆内存中。

3)访问的方式不同

实例对象:对象名.变量名。

静态变量:类名.变量名(推荐使用),也可以使用【对象名.变量名(不推荐使用)】。

4)在内存中分配空间的时间不同

实例变量:创建对象的时候才分配空间。

静态变量:第一次加载类的时候。

2、static修饰方法:

可以通过对象名.方法名和类名.方法名两种方式来访问。

3、static修饰代码块

当类被第一次加载时(可能是调用static属性和方法,或者创建其对象)执行静态代码块,并且只被执行一次,主要的作用是实现static属性的初始化。

4、static修饰内部类

属于整个外部类,而不是属于外部的每个对象。不能访问外部类的非静态成员(变量或方法),可以访问外部类的静态成员。

5、静态导入

import static java.lang.Math.*;

非导入类和接口,而是导入类和接口的静态成员。

注意:局部变量不可以使用static修饰

其他:

1)java中Math、Arrays、Collections等工具类中大量的static属性和方法,通过类名可以直接调用。

2)Class.forName("com.mysql.jdbc.Driver");的作用是第一次加载类的时候调用该类的静态代码块,实现驱动注册。

3)JDK1.8之后在接口中可以出现static方法,但不能是抽象方法。JDK1.7之前是不可以的。

posted @ 2019-12-16 10:21  我有两个皮夹克  阅读(1301)  评论(0编辑  收藏  举报