欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > Java高频面试之SE-09

Java高频面试之SE-09

2025/2/22 2:24:59 来源:https://blog.csdn.net/2401_87189717/article/details/144973379  浏览:    关键词:Java高频面试之SE-09

hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶

final关键字有什么作用?

在 Java 中,final 关键字有多个用途,它可以用于类、方法和变量。根据使用的上下文,final 的含义和作用略有不同。以下是 final 关键字的不同用途及其作用:

1. 用于变量

  • 最终变量(Final Variables)

    • 如果一个变量被声明为 final,则该变量只能被赋值一次。一旦赋值后,不能再改变其值。
    final int x = 10;
    // x = 20; // 编译错误,不能修改最终变量
    
  • 引用类型

    • 对于引用类型的 final 变量,虽然变量本身不能再指向另一个对象,但可以修改对象的内部状态(即对象的属性)。
    final List<String> list = new ArrayList<>();
    list.add("Hello"); // 允许,修改对象的状态
    // list = new ArrayList<>(); // 编译错误,不能重新赋值
    

2. 用于方法

  • 最终方法(Final Methods)

    • 如果一个方法被声明为 final,则该方法不能被子类重写。这可以防止修改父类的方法实现,确保方法逻辑的稳定性。
    class Parent {final void show() {System.out.println("Final method in Parent class.");}
    }class Child extends Parent {// void show() { // 编译错误,无法重写父类的 final 方法//     System.out.println("Trying to override.");// }
    }
    

3. 用于类

  • 最终类(Final Classes)

    • 如果一个类被声明为 final,则该类不能被继承。换句话说,无法创建该类的子类。这通常用于设计不希望被修改的类,比如 String 类。
    final class FinalClass {// 类的内部实现
    }// class ExtendedClass extends FinalClass { // 编译错误,FinalClass 不能被继承
    // }
    

4. 用于提高性能

  • 使用 final 声明变量、方法或类时,编译器和 JVM 可以进行某些优化,因为它们知道该实体不会改变或被重写,从而可能提高性能。

5. 保持不可变性

  • 标记变量为 final 是确保数据不可变的一种机制,特别是在多线程编程中,可以防止对共享数据的意外修改。

总的来说

final 关键字在 Java 中用于限制变量、方法和类的行为。它可以帮助提高代码的可维护性、安全性和性能。理解 final 的用途能够帮助本牛马baby编写更健壮和可预测的代码。

final、finally、finalize 的区别?

finalfinallyfinalize 是 Java 中的三个不同关键字或方法,它们在功能和用途上有显著的区别:

1. final

  • 定义final 是一个关键字,用于声明一个变量、方法或类为最终的,意味着它不能被修改或重写。

  • 用途

    • 最终变量:声明的变量只能赋值一次。
      final int x = 10;
      
    • 最终方法:声明的方法不能被子类重写。
      final void myMethod() { /* ... */ }
      
    • 最终类:声明的类不能被继承。
      final class MyClass { /* ... */ }
      

2. finally

  • 定义finally 是一个关键字,用于异常处理,它用于定义一个代码块,该代码块无论是否发生异常都将被执行。

  • 用途

    • 通常与 trycatch 一起使用,finally 块用于执行关闭资源或清理工作等必要操作。
      try {// 可能抛出异常的代码
      } catch (Exception e) {// 处理异常
      } finally {// 无论是否发生异常,都会执行的代码
      }
      

3. finalize

  • 定义finalize 是一个方法,属于 Object 类,可能会在垃圾回收前被调用。

  • 用途

    • finalize() 方法由垃圾回收器在对象被回收之前调用,以允许对象进行清理操作(如释放资源)。
    • 由于 finalize() 的使用具有不确定性,现在推荐使用 try-with-resources 或其他资源管理方式,而不是依赖于 finalize()
    protected void finalize() throws Throwable {try {// 清理资源的代码} finally {super.finalize(); // 保证父类的 finalize 也被调用}
    }
    

总的来说

  • final:用于声明不允许修改或继承的变量、方法或类。
  • finally:用于异常处理相关代码块,确保特定代码会执行。
  • finalize:是一个方法在对象即将被垃圾回收时调用,用于清理资源,但其使用不再推荐。

面试官:直接调用System.gc()会立即执行GC吗?

答:不会

IDEA ji huo
https://pan.quark.cn/s/4216736c0427
🎬大全
https://kdocs.cn/l/cqhxNU9I2lLD
12306回家科技
https://pan.quark.cn/s/45f6bf9be1b3

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词