static关键字的作用
1、static关键字的主要作用
static的主要作用可以分为两点:
(1)第一点是,为某特定的数据类型或者对象分配单一的存储空间,而与创建对象的个数无关。
(2)第二点是,实现某个属性或者方法不是与对象绑定在一起,而是与类绑定在一起。
也就是说,可以在不创建对象的情况下,直接通过类来调用属性或者方法。
2、static关键字的使用情况
(1)static成员变量
static成员变量可以达到全局的效果。java中的变量分为静态变量和实例变量。
类的所有对象都共享静态变量,而实例变量是与对象绑定的。静态变量属于类,在内存中只有一个复制,所有的引用都指向通一个内存地址。
在类加载时,静态变量(和静态方法)就被加载在方法区了。
注意:不能在成员函数内部定义静态变量。
(2)static成员方法
static成员方法同静态属性类似,是绑定的类,不是绑定的对象,不用创建对象就可以使用。在类被加载时就被加载在方法区了,所有对象共享。
静态方法中不能有super和this关键字,不能调用非静态方法,只能访问所属类的静态方法和静态属性。
static一个很重要的应用就是单例模式,把创建对象的方法声明为static。
(3)static代码块
静态代码块在类中是独立于成员变量和成员方法的代码块的。JVM在加载类时,会先执行静态代码块。静态代码块常被用于初始化静态变量。
(4)static内部类
被声明为static的内部类类就是静态内部类,它可以不依赖于外部对象而被实例化。静态内部类不能与外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部类中静态属性和方法。