final 和 finally 的区别

207 阅读1分钟

final 和 finally 1、 都是 Java当中的关键字,但是它们两个之间具有完全不同的作用, 2、final的主要作用有三个:修饰变量、修饰方法、修饰类。修饰变量时,若该变量是基本数据类型,则变量的值不可改变,若修饰的变量是引用数据类型,则该变量的地址值不可变,但是对象本身内部的属性可以改变;当修饰方法时,方法不可被重写,常用于模板设计模式当中;修饰类时,类不可被继承,如String就是一个典型不可被继承的类,其内部的字节/字符数组也是使用final修饰,所以每个字符串都是一个不可变对象,另外,final修饰变量时会被放入常量池当中(这一块有些薄弱,记不太清了)。 3、finally则是配合try...catch使用,执行 try...catch代码块时,无论是否发生异常,都会执行finally代码块,值得注意的是,当try...catch代码块与finally代码块都有return语句时,会以finally代码块中的return 语句为准(记不太清楚了,应该是这样的)。 3、finalize() 则是一个垃圾回收相关的方法,当对象被回收时,第一次会执行finalize()方法,可以“救活对象”,只要在方法中重新建立对象引用即可,但是并不推荐这样做