Java编程:面试题中的static、final、冒泡排序与抽象类接口解析

需积分: 5 0 下载量 36 浏览量 更新于2024-07-09 收藏 92KB DOCX 举报
"CGB_面试题_第一阶段.docx" 面试题目主要涵盖了Java语言中的一些核心概念,包括`static`和`final`关键字的用法、冒泡排序算法的实现以及`abstract class`和`interface`的区别。接下来,我们将详细讨论这些知识点。 1. `static`和`final`的用法: - `static`修饰符: - 静态属性:这些变量属于类,而不是类的实例。它们在类加载时被初始化,可以通过类名直接访问,不依赖于对象存在。 - 静态方法:同样属于类,可以直接通过类名调用,它们不能访问类的非静态成员,因为非静态成员需要具体的对象实例才能访问。 - 静态代码块:在类加载时执行,用于初始化静态变量。 - `final`修饰符: - 修饰变量:常量,一旦赋值就不能改变。对于实例变量,如果在构造器中未赋值,那么在其他地方仍然可以赋值。 - 修饰方法:该方法不能在子类中被重写,保证了方法的唯一性。 - 修饰类:此类不能被其他类继承,确保了类的封闭性。 2. 冒泡排序算法: 冒泡排序是一种简单的排序算法,其基本思想是重复地交换相邻两个元素,直到没有任何一对数字需要交换。核心代码如下: ```java for(int i = 0; i < arr.length - 1; i++) { // 控制轮数 for(int j = 0; j < arr.length - 1 - i; j++) { // 控制每一轮的次数 if(arr[j] > arr[j + 1]) { // 每次都是和它下一个元素比 int t = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = t; } } } ``` 这段代码会遍历数组,比较相邻元素,如果前一个元素大于后一个,就交换它们的位置,通过多轮这样的比较,实现排序。 3. `abstract class`和`interface`的区别: - 相同点: - 两者都不能直接实例化。 - 实现或继承它们的类必须实现它们声明的所有抽象方法。 - 不同点: - 继承方式:接口使用`implements`,抽象类使用`extends`。一个类可以实现多个接口,但只能继承一个抽象类。 - 功能定位:接口更强调特定功能的实现,通常用于定义行为规范;抽象类则更注重所属关系,提供部分实现,帮助定义类的结构。 - 方法特性:接口中的方法默认是抽象的,没有方法体;抽象类可以包含抽象方法和具体方法。 - 变量特性:接口中的变量默认是`public static final`,即常量;抽象类中可以有各种类型的变量。 这些知识是Java编程基础中的关键部分,对理解和编写高质量的Java代码至关重要。理解并掌握这些概念,将有助于在面试中展示扎实的编程基础。