final、static关键字
final
-
在Java中,final关键字有最终的,不可修改的含义
-
final关键字有三种用途,可以分别应用于变量、成员方法和类
-
如果将某个变量修饰为final,那么该变量就成为常量;
-
-
final修饰变量的一般语法:
- [访问权限] final 数据类型 常量名 = 值;
- 常量在声明时必须初始化,声明之后不能对其进行二次赋值,其后任何试图对常量进行赋值的语句都将报错;
-
final方法的一般声明格式是:
[访问权限] final 返回值类型 方法名(参数列表) {
……
}
-
如果将某个成员方法修饰为final,则意味着该方法不能被子类覆盖,这就和抽象方法必须由子类实现的规定互相矛盾,因此,final和abstract不能同时修饰一个方法;
-
如果将某个类修饰为final,则说明该类无法被继承,一般语法:
[访问权限] final class 类名 {
成员列表
}
-
Java中有一个最常用的final类:java.lang.String/java.lang.Math
static
- 针对一个类所有对象的共性属性,Java采用static成员完成统一调用;
- static在变量或方法之前,表明它们是属于类的,称为类方法(静态方法)或类变量(静态变量)。若无static修饰,则是实例方法和实例变量;
- 和类的其他成员属性不同,static成员并不存放在对象对应的堆空间中,通过对JVM的分析发现,其会将static成员存放在方法区中,每个对象的相应static共享同一段内存;
- 在成员变量前加static关键字,可以将其声明为静态成员变量;
- 如果类中成员变量被定义为静态,那么不论有多少个对象,静态成员变量只有一份内存拷贝,即所有对象共享该成员变量