Java面试必备:static、final用法与抽象类与接口的区别

需积分: 13 0 下载量 123 浏览量 更新于2024-07-17 收藏 96KB DOCX 举报
"CGB面试题第一阶段涵盖了Java程序设计的基础知识,包括static和final的用法、冒泡排序算法,以及abstract class和interface的区别。" 在Java编程中,`static`和`final`是非常重要的关键字,它们在定义类、方法和变量时具有特殊的含义。 1. `static` 关键字: - 静态属性(static fields):这些变量属于类,而不是类的实例。它们在类加载时被初始化,可以通过类名直接访问,无需创建对象。类变量是共享的,所有类的对象都可以访问同一个静态变量。 - 静态方法(static methods):这类方法也是属于类的,可以直接通过类名调用,不依赖于类的实例。它们不能直接访问非静态成员,因为非静态成员是在实例化对象时存在的。但是,静态方法可以调用静态方法和访问静态属性。 2. `final` 关键字: - 修饰变量:如果一个变量被`final`修饰,那么它的值一旦设定就不能更改。对于基本类型,变量值不变;对于引用类型,引用一旦指向某个对象后,不能指向其他对象,但所指向的对象内部状态可以改变。 - 修饰方法:`final`方法不能在子类中被重写,保证了方法的行为一致性。 - 修饰类:`final`类不能被继承,从而提供了一种防止篡改类设计的手段。所有的`final`类中的方法默认都是`final`的。 冒泡排序是一种简单的排序算法,其基本思想是重复地交换相邻两个元素,直到没有任何一对数字需要交换。冒泡排序的时间复杂度是O(n^2),其中n是数组的长度。上述代码展示了冒泡排序的基本实现,通过两层循环来完成排序过程。 3. `abstract class` 和 `interface` 的区别: - 抽象类(abstract class)和接口(interface)都是Java中实现多态的方式,但它们有明显的区别: - 继承:一个类可以实现多个接口,但只能继承一个抽象类。 - 功能:接口强调的是规范,定义了一系列必须实现的方法,而抽象类更侧重于代码复用,可以包含具体实现的方法。 - 方法:接口中的所有方法默认都是抽象的,没有方法体;抽象类则可以包含抽象方法和非抽象方法。 - 实现方式:接口使用`implements`关键字实现,抽象类使用`extends`关键字继承。 了解这些基础概念对于Java程序员来说至关重要,它们是构建高效、可扩展和可维护的代码的基础。在面试中,掌握这些知识点能够展示对Java编程的深入理解和实践经验。