static和final没有直接关系。
final定义的变量可以看作一个常量,不能改变。final定义的方法不能记继承和重写。
static是在内存中分配一块区域,供整个类使用。也就是说,不管这个类有多少个实例,这些实例的static类型的变量都是共用的。
static定义的变量和方法也可以直接通过类来调用,不需要通过类的一个实例来调用。
下面以变量为例举个例子:
public class myTestClass {
int i;
static int i;
final int i;
static final int i;
}
int i;是属于类的实例的,可以改变。
static int i;是属于类的,可以改变。(一旦被赋值,所有类的实例的 i 的值都一样)
final int i;是属于类的实例的,不可以改变。(一旦被赋值,在每个类的实例中就不可以改变了,但是各个实例的 i 的值不一定一样)
static final int i;是属于类的,不可以改变。(一旦被赋值,在每个类的实例中就不可以改变了,而且各个实例的 i 的值都一样)
以上举的变量的例子,方法的话大同小异。