java中final和 finally的区别 - 面试宝典

举报
皮牙子抓饭 发表于 2023/08/11 10:59:41 2023/08/11
【摘要】 Java中​​final​​和​​finally​​是两个完全不同的关键字。 ​​final​​是一个修饰符,可以用于类、方法和变量。当用于类时,表示该类不能被继承;当用于方法时,表示该方法不能被重写;当用于变量时,表示该变量只能被赋值一次,即为常量。​​final​​关键字提供了不可变性的特性,用于确保特定的类、方法或变量的不可更改性。 ​​finally​​是一个关键字,用于结构化异常处...

Java中​final​​finally​是两个完全不同的关键字。 ​final​是一个修饰符,可以用于类、方法和变量。当用于类时,表示该类不能被继承;当用于方法时,表示该方法不能被重写;当用于变量时,表示该变量只能被赋值一次,即为常量。​final​关键字提供了不可变性的特性,用于确保特定的类、方法或变量的不可更改性。 ​finally​是一个关键字,用于结构化异常处理中的​try-catch-finally​块。​finally​块中的代码无论异常是否发生,都会被执行。通常在​finally​块中放置一些必须执行的清理代码,例如关闭打开的文件、释放资源等。​finally​块的作用是确保代码块中的资源被正确释放,即使发生了异常也能保证执行。 因此,​final​​finally​在Java中具有完全不同的作用和用法。​final​用于修饰类、方法和变量,用于实现不可变性;而​finally​用于结构化异常处理中的清理代码块,用于确保资源的正确释放。

以下是使用​​final​​​和​​finally​​关键字的示例代码:

javaCopy code// 使用final修饰类
final class FinalClass {
   // 使用final修饰方法
   final void finalMethod() {
      // final修饰的方法不能被子类重写
   }
   
   // 使用final修饰变量
   final int finalVariable = 10;
   // final修饰的变量只能被赋值一次,即为常量
}
public class FinallyExample {
   public static void main(String[] args) {
      try {
         int result = divide(10, 0);
         System.out.println("Result: " + result);
      } catch (ArithmeticException e) {
         System.out.println("Error: " + e.getMessage());
      } finally {
         System.out.println("Finally block executed");
      }
   }
   
   public static int divide(int num1, int num2) {
      try {
         return num1 / num2;
      } catch (ArithmeticException e) {
         throw e;
      }
   }
}

在上面的示例代码中,​​FinalClass​​类被使用​​final​​修饰,表示它不能被继承。​​finalMethod()​​方法被使用​​final​​修饰,表示它不能被重写。​​finalVariable​​变量被使用​​final​​修饰,表示它只能被赋值一次。 在​​FinallyExample​​类中,​​divide()​​方法用于进行两个数相除的操作。在​​main()​​方法中,调用​​divide()​​方法可能会抛出​​ArithmeticException​​异常。在​​try-catch​​块中捕获该异常并处理,然后无论是否发生异常,​​finally​​块中的代码都会被执行。最后,程序输出相应的结果和​​Finally block executed​​信息。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。