总结static和final关键字_内部类

1.static

1.static有什么作用

static:可以在没有建立对象时候使用。


  1. 修饰变量:是全局变量,在类加载之后放于方法区,只在初始化时加载一次,且全局共享。如果不赋初值就默认为0。
  2. 修改方法:静态方法不能调用非静态的变量和方法(因为非静态的方法和变量需要对象来调用,但是不可能使用),非静态方法能够使用静态方法,使用“类名.方法”调用,而不能用对象调用。因为this也是通过对象调用,所有不能使用this。可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。
  3. 修饰类:只有一种情况,静态内部类。使用场景:静态内部类使用场景一般是当外部类需要使用内部类,而内部类无需外部类资源,并且内部类可以单独创建的时候。特点:

  1. 内部类只能访问外部类静态的变量和方法。
  2. 静态内部类能声名普通的变量和方法,而普通内部类不能声名静态方法和变量。

  1. 修饰代码块:可以优化性能,在类加载时调用。且只调用一次。(加载顺序 父类的静态代码块-子类的静态代码块-父类的构造方法-子类的构造方法),静态语句块中只能访问定义在静态语句块之前的变量,定义在它之后的变量可以赋值,但不能访问

2.为什么要使用静态方法

静态方法的好处就是不用生成类的实例就可以直接调用。

static方法修饰的成员不再属于某个对象,而是属于它所在的类。只需要通过其类名就可以访问,不需要再消耗资源反复创建对象。

在类第一次加载的时候,static就已经在内存中了,直到程序结束后,该内存才会释放。

如果不是static修饰的成员函数,在使用完之后就会立即被JVM回收。

3.什么时候使用static?

如果这个方法是作为一个工具来使用的,就声明为static,不需要new一个对象就可以使用。比如:connect DB就可以声明一个Connection()的static方法。

2.final

final主要的作用就是防止修饰的对象改变。


  • 1.修饰变量:不允许变量改变。
  • 2.修饰方法:防止继承的重写改变该方法。
  • 3.修饰类:不允许继承该类。防止被重写。