static是静态修饰关键字,可以修饰变量和程序块以及类方法:
当定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存;
当修饰一个程序块的时候(也就是直接将代码写在static{...}中)时候,虚拟机就会优先加载静态块中代码,这主要用于系统初始化;
当修饰一个类方法时候你就可以直接通过类来调用而不需要新建对象。
final可以修饰变量、方法及类:
当定义一个final变量时,jvm会将其分配到常量池中,程序不可改变其值;
当修饰一个方法时,该方法在子类中将不能被重写;
当修饰一个类时,该类不能被继承。
无所谓区别,他们根本就是2个完全不同的关键字。
static修饰的成员
是静态的,一个类只有一份拷贝。所有地方用到这个成员都是同一个。
final表示常量。不可以改变的。
通常static
final一起来修饰一个常量,是有意义的。因为常量通常只需要一份拷贝,因此才会有
static
final一起来修饰一个常量。