因为在学习final的使用方法时,用到了如下变量,进行了一个区分,网上查看了相关的资料,可以更好的进行理解
| —— | 成员变量(实例变量) | 局部变量 | 静态变量(类变量) |
|---|---|---|---|
| 定义 | 处于类中,方法体外 | 处于方法中或者方法的形参中 | 再类中,方法体之外 |
| 初始值 | 有默认初始值 | 无默认初始值,需要定义赋值后才可使用 | 有默认初始值 |
| 调用方法 | 对象调用 | —— | 对象、类名调用 |
| 存储位置 | 堆中 | 栈中 | 方法区 |
| 生命周期 | 与对象共存亡 | 与方法共存亡 | 与类共存亡 |
public class FinalVAR{
final int b =0 ;// 声明即需要赋值,否者报错
//或者在代码块赋值,构造器赋值
/* b = 0; */
}
public class Final{
public static void main(String args[]){
final int localA;//只声明不赋值也是可以的
// 使用之前必须赋值!
localA = 0;
}
}
public class FinalTest{
public static void main(String args[]){
final int[] arr = {1,2,3,4,5};
arr[2] = 5;//合法,可以进行修改!
arr = null;//不合法,final修饰后不可进行重新赋值!
final Person p = new person(23);
p.setAge(24);//合法,可以进行修改,赋值等操作
p = null;//非法
}
}