开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情
【地震高岗,一派西山千古秀】
final通用理解
1.修饰变量:这个变量被初始化后便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可变,即不能再指向其他的对象。
public class Test01{ final int x1= 10000; final int x2; final int x3; { x2 = 20000; } Public exe3(){ this.x3 = 3000; } } 如果final修饰的变量是对象类型,那么不可更改指的是该变量不可以再指向别的对象,但是对象的值时可以更改的,比如:
final Operate operate = new Operate() ;// operate有一个普通变量i初始化为10
operate.i = 11;
operate.i = 12;
System.out.println(operate.i); //输出12
上述是自定义类,即便是数组,List等集合类型,所保存的值也是可以更改的。
2.修饰方法(确定下功能,没有被子类重写的必要)
不能被子类重写。如:Object的getClass();
功能已经确定下来,就算子类重写了该方法后,也是实现一样的功能,所以没有必要被子类重写。
3.修饰类(俗称太监类不能有孩子)
不能被继承,如:String类、StringBuffer类、System类
final与static区别
static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变 而且static与非static的存在区别是,在内存中存放的位置不同:所有static修饰的属性和方法都放在内存的方法区(内存的方法区相当于常驻内存,如果一个方法或者变量声明为static,可以节约内存,不必要为每个对象实例化的时候分配内存)里,而非静态的都堆放在堆内存中,只一点要记住哦,对以后内存优化很重要!
生命周期不同:静态在类消失后被销毁,非静态在对象销毁后销毁
其他与final相关
1.final与finally、finalize()
Object.finalize()//垃圾回收的,显示把内存中对象清理掉
2.接口中的变量都是public static final 的
其他与final与finally
final是java中的关键字,修饰符 finally是java中的一种异常处理机制,用在try,catch后
【门朝大海,三河合水万年流】