面试_java_final关键字

100 阅读2分钟

final关键字

  1. 被final修饰的类不可以被继承。比如Math、String

  2. 被final修饰的方法不可以被重写,但是可以被重载!

  3. 被final修饰的变量不可以被改变,但分两种情况讨论:

    • 如果final修饰的变量是 基本数据类型,则其数值一旦在初始化之后便不能更改。
    • 如果final修饰的变量是 引用类型 (比如String、数组、对象),则不能变更引用变量的值,去指向其他对象,但现在指向的对象的内容是可以更改的。比如String仍可以append;数组仍可以按下标更改,对象属性仍可以重新set。



final, finally, finalize的区别

  • final:被final修饰的类不可以被继承;被final修饰的方法不可以被重写;被final修饰的变量不可以被改变。

  • finally:放在异常处理try-catch后面,表示无论是否发生异常都将执行finally中的代码,通常用于释放资源。

    • try中如果有return语句,执行顺序也是先执行完finally 再回来return。但如果finally中也有return语句,则会覆盖try或者catch中的return语句,导致二者无法return,因此finally 中最好不要包含 return。

    当然,也有一些情况走不到finally。

    • 如果try块没有执行,则这个try对应的finally块也不会被执行;
    • try中如果有System.exit(),或者JVM退出了,finally块中的代码不会执行
  • finalize:是Object类的一个方法,当我们调用System.gc() 方法的时候,垃圾回收器会调用finalize()回收垃圾。子类可以通过重写这个方法来实现垃圾回收前特定资源的清理工作。




Java中没有const,想要的那种效果是通过static final组合来实现的。




blog.nowcoder.net/n/d16453a5a…