Java核心基础知识点精讲
Java语言以其简洁性、面向对象、跨平台特性,长期处于企业级开发主流语言之列。本文系统梳理了Java语言的核心基础概念,涵盖语言特性、运行机制、面向对象三大支柱、数组与算法、异常处理及内存管理等关键主题。
Java语言发展简史
1995年Sun公司推出Java语言,最初定位于嵌入式设备与Applet。随着Java 2(J2SE/J2EE/J2ME)标准的提出,逐步覆盖桌面、企业服务与移动平台。-developer生态迅速壮大,构建工具(Maven/Jenkins)、Web框架(Spring/Hibernate/MyBatis)及应用服务器(Tomcat/Jetty)共同丰富了技术栈。
JDK、JRE、JVM关系
- JDK(Java Development Kit)包含JRE与开发工具(javac、javadoc等)
- JRE(Java Runtime Environment)含JVM及核心类库
- JVM(Java Virtual Machine)是Java跨平台特性核心,负责字节码解释与执行
编译型与解释型语言对比
Java采用混合执行模式:源码→字节码(javac)→JIT动态编译为本地机器码。相较于C/C++等编译型语言(直接生成二进制,执行快但移植性差),Java牺牲部分性能换取跨平台能力。类似C#采用IL中间语言+CLR运行时机制,但受制于历史生态,普及度受限。
数据类型与运算
Java为强类型语言,提供8种基本数据类型(四类八种):整型(byte/short/int/long)、浮点型(float/double)、字符型(char)、布尔型(boolean)。任何类型转换必须显式声明或符合隐式提升规则。
自增/自减运算符中,前置(++i)先运算后取值;后置(i++)先取值后运算。逻辑运算符&&与||具有短路特性:前件已能决定整体结果时,将跳过后件计算。
数值格式支持多种进制表示:十进制(123)、八进制(0173)、十六进制(0x7B)、二进制(0b1111011)。常用位运算包括按位与&、或|、异或^,其中异或可实现无第三方变量的互换:
int a = 10, b = 20; a = a ^ b; b = a ^ b; a = a ^ b; // 此时a=20, b=10
数组与排序算法
数组是引用类型,支持静态与动态初始化。动态初始化时,系统自动分配默认值(int[]为0,boolean[]为false等)。冒泡排序通过相邻元素比较移动,实现"大数后移"策略,时间复杂度O(n²)。
稀疏数组用于高效存储大量重复值(如棋盘状态):仅记录有效数据的行、列与值,构建(n+1)×3的压缩矩阵,显著降低空间占用。
面向对象三大特性
- 封装:隐藏实现细节,仅暴露必要接口,通过private属性结合getter/setter方法控制访问
- 继承:子类复用父类成员,使用extends关键字;Java单继承,所有类最终继承Object
- 多态:父类引用指向子类对象(向上转型),运行时动态绑定重写方法。前提条件为继承关系+方法重写+父类引用
构造器不参与重载判断,若定义带参构造器,则须显式声明无参构造器。
class Animal {
public void speak() { System.out.println("Animal sound"); }
}
class Dog extends Animal {
@Override
public void speak() { System.out.println("Woof!"); }
}
// 多态调用
Animal a = new Dog();
a.speak(); // 输出"Woof!"
接口与抽象类
接口(interface)体现"规范分离"设计思想,所有方法默认public abstract,字段public static final。自JDK8起支持default与static方法,增强接口灵活性。
抽象类(abstract class)可包含部分实现代码,适用于需共享逻辑的类族,不能被实例化。抽象类有默认无参构造器,子类构造器隐式调用super()。
类可多实现接口,接口支持多继承。例如:
public interface Flyable { void fly(); }
public interfaceSwimmable { void swim(); }
public class Bird implements Flyable, Swimmable {
public void fly() { /*...*/ }
public void swim() { /*...*/ }
}
异常处理机制
Java异常体系以Throwable为根类,分Error(JVM级错误)与Exception(可处理异常)。常用关键字包括:
- try-catch:捕获并处理异常
- finally:释放资源(IO流、数据库连接等)
- throw/throws:主动抛出异常或声明异常传播
异常处理最佳实践:优先捕获具体异常类,最后用Exception兜底;避免仅打印堆栈信息;确保finally块执行清理操作。
内存管理与GC机制
Java自动内存管理基于垃圾回收(GC):当对象失去引用(不可达)时,JVM定期启动GC释放内存。可调用System.gc()建议回收,但不保证立即执行。
对象回收前会调用finalize()方法,但此机制已废弃。JDK9起推荐使用try-with-resources或Cleaner替代,以防内存泄漏。
try (FileInputStream fis = new FileInputStream("data.txt")) {
// 自动关闭资源
} catch (IOException e) {
e.printStackTrace();
}
静态成员与内部类
static修饰的成员属于类级别,随类加载初始化,可通过类名直接访问,适用于工具类方法(如Math.sqrt())。
内部类分四种类型:
- 成员内部类:可访问外部类所有成员
- 静态内部类:仅访问外部类静态成员
- 局部内部类:定义于方法内
- 匿名内部类:常用于事件监听、Lambda简化
例如多线程实现:
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Thread execute");
}
}).start();
包机制与文档注释
通过package声明包路径,使用import引入类。推荐遵循域名倒置规则(如com.example.project)。Javadoc生成API文档支持标准注释标签:
- @author:作者信息
- @version:版本号
- @param/@return/@throws:方法参数/返回值/异常说明