Java 作为面向对象的经典编程语言,其核心知识点贯穿开发始终。本文整理了 final、this、static 等关键字用法、类与对象的核心概念、继承多态特性及包装类相关知识
一、核心关键字解析
1. final 关键字
final 关键字可修饰常量、方法和类,核心作用是限制修改与继承。
- 修饰常量:必须初始化且赋值后不可修改,仅能赋值一次。
- 修饰方法:被修饰的方法无法在子类中重写。
- 修饰类:被修饰的类不能被继承,例如 Java 中的 String 类就是 final 修饰的类。
- 早期用途:避免动态绑定带来的系统开销,短且未被覆盖的 final 方法可被编译器内联优化,提升执行效率。
2. this 关键字
this 关键字用于指代当前对象,解决变量命名冲突问题。
- 访问属性:通过 this. 属性名称,明确调用当前对象的成员变量。
- 调用方法:通过 this. 方法名,调用当前对象的其他成员方法。
- 访问构造方法:通过 this () 实现构造方法间的调用,需放在构造方法第一条语句,且不能与 super () 同时使用。
- 使用限制:不能在普通方法中使用 this () 访问构造方法。
3. static 关键字
static 关键字用于修饰变量和方法,实现数据与方法的共享。
- 修饰变量:属于类变量,被该类所有对象共享,不依赖具体实例存在。
- 修饰方法:属于类方法,可通过类名直接调用,不能用于修饰对象。
二、类与对象核心概念
1. 类与对象的关系
类是创建对象的模板或蓝图,定义了某类事物的共同属性和行为;对象是类的具体实例,是独一无二的实体。
- 类的组成:包含属性(数据)和方法(行为),例如猫类可定义颜色、年龄等属性,以及跑、吃等方法。
- 对象的创建:通过 new 关键字根据类实例化对象,类中有什么属性和方法,对象就拥有对应的内容,且每个对象的属性值可不同。
2. 链表节点示例
以 Node 类为例,展示对象的关联使用:
public class Node {
public int data;
public Node next;
public Node(int data) {
this.data = data;
}
}
- 每个 Node 对象包含 data 属性和指向 next 节点的引用,通过 next 属性可实现节点间的关联,形成链表结构。
- 实例化后通过赋值地址值,建立节点间的连接关系,next 默认值为 null。
三、继承与多态基础
1. 继承特性
继承允许子类复用父类的属性和方法,子类可在父类基础上扩展功能。
- 类的继承:通过 extends 关键字实现,Object 是所有类的父类。
- final 类限制:被 final 修饰的类无法被继承,限制了继承关系的扩展。
2. 多态核心
多态是面向对象的重要特性,表现为同一方法在不同子类中有不同实现。
- 实现前提:基于继承关系,子类重写父类方法(final 方法不可重写)。
- 核心意义:提高代码的灵活性和可扩展性,使程序更易维护。
四、数据类型与包装类
1. 数据类型分类
Java 数据类型分为基本数据类型和引用数据类型。
- 基本数据类型:包括整型、浮点型、字符型、布尔型,共 8 种(int、double、boolean、char、long、float、byte、short)。
- 引用数据类型:包括类、接口、数组,其赋值操作传递的是地址值。
- 数据删除本质:计算机中没有真正的删除操作,仅通过数据覆盖实现 “删除” 效果。
2. 包装类详解
包装类是基本数据类型对应的类,支持基本类型与包装类的相互转换。
- 包装类对应关系:int→Integer、double→Double、boolean→Boolean 等。
- 自动拆装箱:无需手动转换,基本类型可自动装箱为包装类,包装类可自动拆箱为基本类型。
- 128 陷阱:Integer 缓存了 - 128 到 127 之间的数值,该范围内通过 valueOf 创建的对象引用相同,超出则创建新对象,导致 == 比较结果不同。
五、实用代码示例
数组最值交换
以下代码实现数组中最大值与最后一位元素交换、最小值与第一位元素交换:
,助力夯实编程基础。
public class ArrayExchange {
public static void main(String[] args) {
int[] arr = {6, 2, 9, 15, 1, 5, 20, 7, 18};
int maxIndex = 0;
int minIndex = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] > arr[maxIndex]) {
maxIndex = i;
}
if (arr[i] < arr[minIndex]) {
minIndex = i;
}
}
// 交换最大值与最后一位
int temp = arr[maxIndex];
arr[maxIndex] = arr[arr.length - 1];
arr[arr.length - 1] = temp;
// 交换最小值与第一位
temp = arr[minIndex];
arr[minIndex] = arr[0];
arr[0] = temp;
for (int num : arr) {
System.out.print(num + " ");
}
}
}
811

被折叠的 条评论
为什么被折叠?



