Java中static关键字的作用

在Java中, static主要有4中使用情况:成员变量、成员方法、代码块和内部类。
static是与对象解绑的,和对象就没关系了,跟类建立了联系。为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。

  1. 修饰成员变量(属性)时,只要这个类被加载,静态成员变量就会分配到空间,这在内存中只能复制一次,对静态变量的引用有两种方式,分别是“类.静态变量"和”对象.静态变量"。
    而实例变量属于对象,只有对象被创建后,实例变量才会被分配内存空间,才能被使用,它在内存中存在多个复制,只有用“对象.实例变量”的方式来引用。
  2. 成员方法,static方法是类的方法,不需要创建对象就可以被调用,static方法中不能用this和super,不能调用非static方法,不能访问非static类型的属性和方法不能对内部类进行实例化
    非static方法是对象的方法,只有对象被创建出来后才可以被使用
    static一个很重要的用途就是实现单例设计模式。单利模式的特点是该类只能有一个实例,为了实现这一功能,必须隐藏类的构造函数,即把构造函数声明为private,并提供一个创建对象的方法,由于构造对象被声明为private,外界无法直接创建这个类型的对象,只能通过该类提供的方法来获取类的对象,要达到这样的目的只能把创建对象的方法声明为static。
    3.static代码块,只能执行一次,要是有父类的话,先执行父类的,再执行子类的静态代码块(下来父类代码块,父类构造方方法,子类代码块,子类构造方法)
    注意:static不能修饰方法内部成员。(这个我经常忘记)

你可能感兴趣的:(Java中static关键字的作用)