当前位置:首页 > 技术 > 正文内容

Java核心基础知识点精讲

访客 技术 2026年9月26日 14

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的压缩矩阵,显著降低空间占用。

面向对象三大特性

  1. 封装:隐藏实现细节,仅暴露必要接口,通过private属性结合getter/setter方法控制访问
  2. 继承:子类复用父类成员,使用extends关键字;Java单继承,所有类最终继承Object
  3. 多态:父类引用指向子类对象(向上转型),运行时动态绑定重写方法。前提条件为继承关系+方法重写+父类引用

构造器不参与重载判断,若定义带参构造器,则须显式声明无参构造器。

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())。

内部类分四种类型:

  1. 成员内部类:可访问外部类所有成员
  2. 静态内部类:仅访问外部类静态成员
  3. 局部内部类:定义于方法内
  4. 匿名内部类:常用于事件监听、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:方法参数/返回值/异常说明

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

linux screen 用法详情 (nohup 的替代方案)

一、screen 是什么?能干嘛?screen 是一个终端复用器,可以:在一个 SSH 会话中开多个“虚拟终端”SSH 断线后,程序仍然在后台运行随时重新连接到原来的会话特别适合:nohup 的替代方案跑脚本 / 爬虫 / 训练模型运维、远程开发二、安装 screen# CentOS / Rocky / Almayum install -y screen# Debian / Ubuntuapt i...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。