一、Java 基础入门:从 0 到 1 认识 Java(详细笔记)

发布于:2025-09-14 ⋅ 阅读:(19) ⋅ 点赞:(0)

1.1 Java 语言简介与发展历程

Java 是一门面向对象的高级编程语言,以“跨平台、安全、稳定”为核心特性,自诞生以来长期占据编程语言排行榜前列,广泛应用于后端开发、移动端开发、大数据等领域。

1.1.1 起源与核心人物

  • 起源背景:1991 年,Sun 公司(后被 Oracle 收购)的“Green 项目”启动,目标是开发一种能在嵌入式设备(如电视机顶盒)上运行的语言,核心开发者包括 詹姆斯·高斯林(James Gosling)(被称为“Java 之父”)。
  • 语言命名:最初名为“Oak”(橡树),因商标冲突,1995 年正式更名为“Java”(源自印尼爪哇岛,象征“活力与广泛传播”)。
  • 首次发布:1995 年 Sun 公司在 SunWorld 大会上发布 Java 1.0,同时推出 Java Applet(早期网页交互技术,后因安全问题逐渐被淘汰)。

1.1.2 关键版本迭代(LTS 版本优先)

Java 版本分为“普通版本”和“长期支持版本(LTS)”,LTS 版本提供 5-8 年官方支持,是企业生产环境的首选:

  • JDK 1.5(2004 年):里程碑版本,引入泛型、枚举、注解、foreach 循环、自动装箱/拆箱等核心特性,奠定现代 Java 基础。
  • JDK 8(2014 年):最经典的 LTS 版本,引入 Lambda 表达式、Stream API、Optional 类、接口默认方法,至今仍是企业主流。
  • JDK 11(2018 年):LTS 版本,移除永久代(改用元空间)、支持局部变量类型推断(var 关键字)、自带 HttpClient 工具类。
  • JDK 17(2021 年):最新 LTS 版本,引入密封类(Sealed Classes)、Record 类(简化实体类编写)、增强 Switch 表达式,性能大幅优化。

1.1.3 现在与未来

  • 归属权:2009 年 Oracle 收购 Sun 公司,获得 Java 版权与开发权,目前 Oracle 每 6 个月发布一个普通版本,每 3 年发布一个 LTS 版本。
  • 生态地位:Java 生态是编程语言中最完善的之一,拥有海量类库、框架(Spring、MyBatis)和工具,支持从小型应用到大型分布式系统的开发。

1.2 Java 核心优势与应用场景

Java 能长期流行,核心在于其独特的设计理念和广泛的适用性,具体优势与场景如下:

1.2.1 四大核心优势

  1. 跨平台性(一次编写,到处运行)
    这是 Java 最核心的优势。Java 源文件编译后生成 字节码文件(.class),不直接依赖操作系统,而是通过 Java 虚拟机(JVM) 解释执行——不同操作系统(Windows、macOS、Linux)只需安装对应版本的 JVM,即可运行同一套字节码文件。
    ✅ 示例:在 Windows 上编写的 Java 程序,无需修改代码,复制到 Linux 服务器上(安装 Linux 版 JVM)即可直接运行。

  2. 纯面向对象编程(OOP)
    Java 严格遵循面向对象思想,万物皆可“类与对象”,支持封装、继承、多态三大特性,能更好地模拟现实世界,降低复杂系统的开发与维护成本。
    ❌ 例外:基本数据类型(如 intchar)不是对象,但可通过“包装类”(如 Integer)转为对象。

  3. 安全性与稳定性

    • 安全机制:Java 自带“沙箱机制”(限制程序访问本地资源)、类加载器(防止恶意代码篡改核心类)、异常处理(避免程序崩溃),适合开发金融、支付等对安全要求高的系统。
    • 内存管理:通过 垃圾回收器(GC) 自动回收无用内存,无需手动释放(对比 C/C++ 的 free/delete),大幅减少内存泄漏问题。
  4. 生态丰富与社区活跃

    • 官方提供庞大的 Java 核心类库(JDK API),涵盖 IO、集合、多线程、网络等功能,无需重复造轮子。
    • 第三方框架(Spring Boot、MyBatis、Dubbo)、工具(Maven、Git)、社区(Stack Overflow、GitHub)成熟,问题能快速找到解决方案。

1.2.2 四大主流应用场景

应用领域 核心技术/框架 典型案例
后端开发 Java EE、Spring Boot、Spring Cloud 电商系统(淘宝、京东)、金融系统(银行核心系统)
移动端开发 Android 原生开发 手机 APP(早期微信、抖音核心模块)
大数据开发 Hadoop、Spark、Flink 数据计算(用户行为分析、实时推荐)
桌面应用开发 Swing、AWT(传统)、JavaFX 企业内部工具(如报表系统、管理端)

1.3 开发环境搭建(JDK 下载、安装、环境变量配置)

Java 开发的基础是 JDK(Java Development Kit,Java 开发工具包),必须先完成 JDK 安装与环境变量配置,才能编译和运行 Java 程序。以下以 JDK 17(LTS 版本,Windows 10/11 系统) 为例,步骤详细到“小白可follow”:

1.3.1 第一步:下载 JDK

  1. 访问官方地址:打开 Oracle 官网 JDK 下载页(链接),建议用 LTS 版本(如“Java SE 17 LTS”)。
  2. 选择系统版本
    • Windows 系统:根据电脑位数选择(64 位选“Windows x64 Installer”,exe 格式;32 位选“Windows x86 Installer”,目前主流电脑均为 64 位)。
    • macOS 系统:选“macOS x64.dmg”(Intel 芯片)或“macOS AArch64.dmg”(M1/M2 芯片)。
    • Linux 系统:选“Linux x64 RPM Package”或“Linux x64 Compressed Archive”(解压版)。
  3. 登录 Oracle 账号:Oracle 要求登录后才能下载,若无账号,点击“Create Account”注册(免费,填写邮箱、密码即可)。
  4. 开始下载:登录后点击对应版本的“Download”,等待 exe 文件下载完成(约 200-300MB)。

1.3.2 第二步:安装 JDK

  1. 双击运行安装包:打开下载的 jdk-17_windows-x64_bin.exe,弹出安装向导,点击“下一步”。
  2. 选择安装路径(关键!)
    • 建议 自定义路径(默认路径在 C 盘,若 C 盘空间不足可改到其他盘),例如:D:\Program Files\Java\jdk-17(路径中不能有中文、空格或特殊字符,否则后续会报错)。
    • 记住这个路径(后续配置环境变量要用),点击“下一步”。
  3. 等待安装完成:安装过程约 1-2 分钟,无需额外操作,最后点击“关闭”。

⚠️ 注意:JDK 11 及以上版本无需单独安装 JRE(JRE 已集成在 JDK 中,可通过 jlink 工具生成独立 JRE,新手暂无需关注)。

1.3.3 第三步:配置环境变量(Windows 系统)

环境变量的作用是让系统“找到”JDK 的编译工具(javac.exe)和运行工具(java.exe),否则在命令行输入 javac 会提示“不是内部或外部命令”。

步骤 1:打开环境变量设置
  • 方法 1:右键“此电脑” → “属性” → “高级系统设置” → “环境变量”。
  • 方法 2:Win + R 输入 sysdm.cpl → 回车 → “高级” → “环境变量”。
步骤 2:配置“JAVA_HOME”变量(用户变量/系统变量均可,推荐用户变量)
  1. 在“用户变量”栏点击“新建”,弹出“新建用户变量”窗口:
    • 变量名:JAVA_HOME(大小写敏感,必须全大写)。
    • 变量值:粘贴第一步的 JDK 安装路径(例如 D:\Program Files\Java\jdk-17)。
  2. 点击“确定”保存。
步骤 3:配置“Path”变量
  1. 在“用户变量”栏找到“Path”变量,双击打开(或选中后点击“编辑”)。
  2. 点击“新建”,输入 %JAVA_HOME%\bin%JAVA_HOME% 是引用上一步的 JAVA_HOME 变量,自动指向 JDK 的 bin 目录)。
  3. 再点击“新建”,输入 %JAVA_HOME%\jre\bin(JDK 17 无单独 JRE 目录,可省略此步,若后续报错再补充)。
  4. 点击“上移”,将这两个路径移到最顶部(避免与其他软件的 Java 版本冲突),然后依次点击“确定”关闭所有窗口。
步骤 4:验证配置是否成功
  1. 打开 新的命令提示符(CMD)(注意:必须关闭旧 CMD 重新打开,否则环境变量不生效)。
  2. 输入以下两个命令,若输出类似结果,则配置成功:
    • 命令 1:java -version(查看 Java 运行环境版本)
      ✅ 成功输出:java version "17.0.9" 2023-10-17 LTS(版本号可能因下载的 JDK 版本略有不同)。
    • 命令 2:javac -version(查看 Java 编译器版本)
      ✅ 成功输出:javac 17.0.9

❌ 常见错误与解决:

  • 若提示“‘javac’ 不是内部或外部命令”:检查 JAVA_HOME 路径是否正确,Path 中是否添加 %JAVA_HOME%\bin,且是否打开新 CMD。
  • 若提示“找不到或无法加载主类”:暂不涉及,后续编写程序时再排查。

1.4 主流 IDE 使用(IntelliJ IDEA / Eclipse 基础操作)

IDE(集成开发环境)能简化 Java 开发(自动补全、语法检查、一键运行),主流工具是 IntelliJ IDEA(简称 IDEA)Eclipse,新手推荐 IDEA 社区版(免费、功能足够入门)。

1.4.1 IntelliJ IDEA(社区版)使用教程

1. 下载与安装
  • 官网地址:IntelliJ IDEA 下载页,选择“Community”(社区版,免费),下载对应系统版本。
  • 安装步骤:
    • 双击安装包,勾选“Create Desktop Shortcut”(创建桌面快捷方式)、“Associate .java files”(关联 .java 文件),点击“Next”。
    • 安装路径建议自定义(如 D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2),点击“Install”,等待完成。
2. 首次启动配置
  • 首次打开 IDEA,选择“Skip Remaining and Set Defaults”(跳过默认配置,新手无需修改)。
  • 主题选择:可在“Appearance & Behavior → Appearance”中切换“Light”(浅色)或“Darcula”(深色,保护眼睛)。
  • 配置 JDK:
    • 打开“File → Project Structure → SDKs”,点击“+”号,选择“JDK”。
    • 浏览到 JDK 安装路径(如 D:\Program Files\Java\jdk-17),点击“OK”,IDEA 会自动识别 JDK 版本。
3. 创建第一个 Java 项目
  1. 点击“New Project”,进入项目创建界面:

    • 左侧选择“Java”,右侧“Project SDK”选择已配置的 JDK 17,点击“Next”。
    • 取消勾选“Create project from template”(不使用模板,从零开始),点击“Next”。
    • 项目命名:例如“JavaHelloWorld”,项目路径自定义(如 D:\JavaProjects\JavaHelloWorld),点击“Finish”。
  2. 创建“包(Package)”:

    • 包用于分类管理 Java 类(避免类名冲突),右键 src 目录 → “New → Package”,输入包名(命名规范:全小写,多层级用点分隔,如 com.example.demo),点击“OK”。
  3. 创建“Java 类(Class)”:

    • 右键包名(com.example.demo) → “New → Java Class”,类名输入“HelloWorld”(命名规范:首字母大写,驼峰式),点击“OK”。
4. 编写与运行代码
  • 在 HelloWorld 类中输入代码(IDEA 会自动补全):
    package com.example.demo; // 包名,必须在类的最顶部
    
    public class HelloWorld {
        // main 方法:程序入口,固定格式
        public static void main(String[] args) {
            // 输出语句:在控制台打印“Hello World!”
            System.out.println("Hello World!");
        }
    }
    
  • 运行程序:
    • 方法 1:右键代码编辑区 → “Run ‘HelloWorld.main()’”。
    • 方法 2:点击类名旁的绿色三角形图标(▶️),选择“Run ‘HelloWorld’”。
  • 查看结果:底部“Console”面板会输出 Hello World!,表示运行成功。
5. 常用快捷键(提升效率)
  • psvm + 回车:快速生成 main 方法(public static void main(String[] args))。
  • sout + 回车:快速生成输出语句(System.out.println();)。
  • Ctrl + D:复制当前行到下一行。
  • Ctrl + Y:删除当前行。
  • Ctrl + /:单行注释(//)或取消注释。

1.4.2 Eclipse(开源免费)简要对比

Eclipse 是老牌 IDE,开源免费,但界面和操作流畅度略逊于 IDEA,适合习惯轻量级工具的用户:

  • 下载:官网 Eclipse 下载页,选择“Eclipse IDE for Java Developers”。
  • 核心操作:创建项目(File → New → Java Project)、创建类(New → Class)、运行(右键 → Run As → Java Application),流程与 IDEA 类似。
  • 优缺点:占用内存小,但自动补全、代码提示功能不如 IDEA 智能,新手建议优先选 IDEA 社区版。

1.5 第一个 Java 程序:HelloWorld(代码解析 + 运行流程)

“Hello World”是所有编程语言的入门案例,通过它可理解 Java 程序的基本结构、编译与运行逻辑。

1.5.1 完整代码与逐行解析

以下是标准的 HelloWorld 代码(基于 IDEA 中的 com.example.demo.HelloWorld 类):

// 1. 包声明:指定当前类所在的包,必须放在代码最顶部
package com.example.demo;

// 2. 类声明:public 是访问修饰符,HelloWorld 是类名(必须与文件名一致)
public class HelloWorld {

    // 3. main 方法:程序的“入口”,JVM 运行程序时会首先执行此方法
    // public:公开访问权限,JVM 可调用
    // static:静态方法,无需创建对象即可调用
    // void:无返回值(不需要向调用者返回结果)
    // main:方法名(固定,不能修改)
    // String[] args:参数数组,用于接收命令行传入的参数(新手暂无需使用)
    public static void main(String[] args) {

        // 4. 输出语句:调用 System 类的 out 对象的 println 方法,在控制台打印字符串
        // System:Java 核心类库中的类(位于 java.lang 包,无需手动导入)
        // out:System 类的静态成员变量(类型是 PrintStream)
        // println:PrintStream 类的方法,作用是“打印字符串并换行”
        System.out.println("Hello World!");
    }
}

⚠️ 必须遵守的语法规则:

  1. 类名与文件名一致:若类用 public 修饰,文件名必须和类名完全相同(大小写敏感),例如 HelloWorld.java 对应 public class HelloWorld
  2. 分号结尾:Java 语句必须以 ; 结束(println("..."); 后的分号不能漏)。
  3. 大括号配对:classmain 方法的代码块必须用 {} 包裹,且要对齐(IDE 会自动格式化)。

1.5.2 两种运行方式(IDE 可视化 + 命令行)

方式 1:IDE 中运行(推荐新手)

如 1.4.1 节所述,右键类 → Run,直接在 Console 面板查看结果,IDE 会自动完成“编译 → 运行”的全过程,无需手动操作。

方式 2:命令行运行(理解底层流程)

通过命令行运行,能清晰看到 Java 程序“源文件 → 字节码 → 运行”的步骤,适合理解原理:

  1. 找到 .java 源文件路径
    若 IDEA 项目路径是 D:\JavaProjects\JavaHelloWorld,则 .java 文件路径为 D:\JavaProjects\JavaHelloWorld\src\com\example\demo\HelloWorld.java(包名对应文件夹层级)。

  2. 编译:javac 命令生成 .class 字节码文件

    • 打开 CMD,通过 cd 命令进入 .java 文件所在目录:
      cd D:\JavaProjects\JavaHelloWorld\src\com\example\demo
    • 输入编译命令:javac HelloWorld.javajavac 是 JDK 的编译器工具)。
    • 若代码无语法错误,执行后会在当前目录生成 HelloWorld.class 文件(字节码文件,JVM 可识别的格式)。
  3. 运行:java 命令执行字节码

    • 注意:运行时需要“带包名”执行,因此不能在 demo 目录下直接运行,需回到 src 目录(包名的根目录):
      cd ../../../../(从 demo 目录回到 src 目录)。
    • 输入运行命令:java com.example.demo.HelloWorldjava 是 JVM 的运行工具,后面跟“包名.类名”,无需加 .class 后缀)。
    • 执行后,CMD 会输出 Hello World!,表示运行成功。

1.5.3 常见错误与解决

错误现象 原因分析 解决方法
编译时提示“找不到符号” 变量名/方法名拼写错误(如 sout 写成 soutt 检查代码拼写,确保与标准语法一致
运行时提示“找不到或无法加载主类” 运行命令未带包名,或包名与路径不匹配 回到 src 目录,用“包名.类名”格式运行(如 java com.example.demo.HelloWorld
编译时提示“类 HelloWorld 是公共的,应在名为 HelloWorld.java 的文件中声明” 文件名与 public 类名不一致(如文件名是 helloworld.java 将文件名改为与类名完全一致(大小写敏感)

1.6 Java 运行机制(JVM、JRE、JDK 关系 + 跨平台原理)

理解 Java 运行机制,是掌握 Java 跨平台特性的核心,也是后续学习 JVM 调优、性能优化的基础。

1.6.1 JVM、JRE、JDK 三者的关系

首先明确三个核心概念的定义,再通过“包含关系”和“比喻”理解它们的作用:

组件 英文全称 核心作用 包含内容
JDK Java Development Kit Java 开发工具包,供开发者编写、编译程序 JRE + 开发工具(javac、java、javadoc 等)
JRE Java Runtime Environment Java 运行环境,供用户运行 Java 程序 JVM + 核心类库(java.lang、java.util 等)
JVM Java Virtual Machine Java 虚拟机,负责将字节码转为机器码执行 类加载器、执行引擎、垃圾回收器等
包含关系(从大到小):

JDK ⊇ JRE ⊇ JVM + 核心类库
(JDK 包含 JRE,JRE 包含 JVM 和运行所需的核心类库)

通俗比喻:
  • 把 Java 程序比作“蛋糕”:
    • JDK 是“全套烘焙工具 + 食材 + 烤箱”(开发者用它做蛋糕)。
    • JRE 是“食材 + 烤箱”(用户用它加热蛋糕吃,不需要烘焙工具)。
    • JVM 是“烤箱”(核心设备,负责把“生蛋糕坯(字节码)”烤成“熟蛋糕(运行结果)”)。

1.6.2 Java 程序完整运行流程

Java 程序从编写到运行,需经历 4 个步骤,每个步骤的作用如下:

  1. 编写:创建 .java 源文件
    开发者用文本编辑器(或 IDE)编写 Java 代码,保存为 .java 后缀的源文件(人类可读的文本格式)。

  2. 编译:javac 编译为 .class 字节码
    JDK 的 javac 编译器读取 .java 文件,检查语法错误后,将其转换为 字节码文件(.class)——字节码是一种“中间代码”,既不是机器码,也不是源文件,只能被 JVM 识别。
    ✅ 关键:字节码文件是“平台无关”的,在 Windows 上编译的 .class 文件,可直接复制到 Linux 上运行。

  3. 加载:JVM 类加载器加载 .class
    运行 java 类名 命令时,JVM 的“类加载器(ClassLoader)”会根据类名找到对应的 .class 文件,将其加载到 JVM 的内存中(方法区),并创建对应的 Class 对象(用于后续实例化)。

  4. 执行:JVM 执行字节码
    JVM 的“执行引擎”会将字节码转换为当前操作系统能识别的 机器码(平台相关),然后交给 CPU 执行,最终输出运行结果。
    优化:为提升性能,JVM 会对“热点代码”(频繁执行的代码)采用 JIT(即时编译) 技术,将其直接编译为机器码缓存起来,避免每次都解释执行。

流程示意图(文字版):
.java 源文件 → [javac 编译] → .class 字节码文件 → [JVM 类加载] → [JVM 执行引擎(解释/编译为机器码)] → 操作系统执行 → 输出结果

1.6.3 跨平台原理(为什么“一次编写,到处运行”)

Java 跨平台的核心在于 “字节码 + JVM”的分离设计

  • 字节码平台无关:无论在哪个操作系统上编译,生成的 .class 字节码格式都是统一的,不存在“Windows 字节码”“Linux 字节码”的区别。
  • JVM 平台相关:Oracle 为不同操作系统提供了对应的 JVM 实现(如 Windows 版 JVM、Linux 版 JVM),这些 JVM 能将统一的字节码转换为当前系统的机器码。

例如:

  • 在 Windows 上:Java 代码 → 字节码 → Windows 版 JVM → Windows 机器码 → 运行
  • 在 Linux 上:同一字节码 → Linux 版 JVM → Linux 机器码 → 运行

正是因为 JVM 屏蔽了不同操作系统的差异,开发者才无需为每个平台编写不同的代码,实现“一次编写,到处运行”。