一、static关键字
1、static关键字可以用来修饰类的成员(变量或者方法),若要修饰类,只能用来修饰内部类,因为此时的内部类相当于外部类的成员,static不可以用来修饰外部类。
2、static修饰的变量与c++相同,不依赖于对象存在,所有的对象共用同一个变量,在一个对象中修改在其他对象中也一并修改,因为他们共用的是同一块存储空间。静态变量可以通过类名(推荐)或者对象名(不推荐)来访问。
3、static修饰的方法也不依赖于对象存在,通过类名(推荐)或者变量名(不推荐)访问,Java中的main函数必须申明为静态,因为在main执行前还没有任何的对象被创建,要想访问函数,只能访问静态函数。
4、静态块:被static修饰的由{}包围的一段代码块,类中的静态块一般用于静态成员的初始化,它仅仅在类加载时(可以理解为程序运行开始前,实际上不一定,但不影响结果)执行一次,绝不会执行第二次。
5、import static java.lang.*表示导入java.lang包的所有静态成员。
二、final关键字
1、final关键字可以用来修饰类,方法,变量。
2、被final修饰的变量是常量,只能初始化或赋值一次,相当于c++中的const。初始化即在申明的同时赋值,否则只能在构造器中显式赋值(只针对成员变量,局部变量也是仅能赋值一次,但是显然不一定在构造器中)。
3、被final修饰的方法可以被继承,但不能在子类中重写。
4、倍final修饰的类不可以被继承。