static

1、static要解决什么?

即使没有创建对象,也能使用属性和调用方法。

2、特点
  • 在类被加载的时候,就会去加载被static修饰的部分。
  • 当一个类加载完毕之后,即便没有创建对象,也可以去访问。
3、static可以修饰本地变量吗

不能,static只能修饰成员变量!

4、静态变量

静态变量属于类本身,不属于类对象。

实例变量:每次创建对象,都会为每个对象分配成员变量内存空间,实例变量是属于实例对象的,在内存中,创建几次对象,就有几份成员变量。

静态变量:静态变量由于不属于任何实例对象,是属于类的,所以在内存中只会有一份,在类的加载过程中,JVM为静态变量分配一次内存空间。

5、静态方法

对于静态方法来说是不属于任何实例对象的,也就是说在静态方法内部是不能使用this。

6、静态方法会被子类继承吗?

会被子类继承,但不能被重写(也就是不能用override注解该方法)。然而子类可以覆盖父类的该static方法(也就是不使用override注解该方法)。

7、静态内部类

静态变量和静态方法会出现这个语法错误:static methods can only be declared in a static or top level type。其意思是static方法只能在静态或者顶级类型(顶级类型应该就是外部类中)中声明。原因在于静态变量和静态方法都只需要通过类名就能访问,不必通过任何实例化对象;而普通内部类的初始化要利用外部类的实例化对象,这明显违背了static的设计初衷。

因此普通内部类里面不能定义各种静态的成员(包括静态变量、静态方法、静态代码块和静态内部类),而静态内部类中则可以。

results matching ""

    No results matching ""