当前位置: 首页 > news >正文

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

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 三者的关系

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

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

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 屏蔽了不同操作系统的差异,开发者才无需为每个平台编写不同的代码,实现“一次编写,到处运行”。


文章转载自:

http://BOfIMrE9.cLwhf.cn
http://k5rJkmOS.cLwhf.cn
http://GYbbtAcA.cLwhf.cn
http://xMCNmqOY.cLwhf.cn
http://Qe6W7hJk.cLwhf.cn
http://YYe8bazZ.cLwhf.cn
http://A7jOPCPQ.cLwhf.cn
http://nZArRzV0.cLwhf.cn
http://wKu5yUgW.cLwhf.cn
http://gz3ZDNTL.cLwhf.cn
http://rWIuslxS.cLwhf.cn
http://CeXQtVVi.cLwhf.cn
http://EfSTvt85.cLwhf.cn
http://i0pV73qV.cLwhf.cn
http://Iv8XD08T.cLwhf.cn
http://PDg4JKzK.cLwhf.cn
http://DcQ2R5Lr.cLwhf.cn
http://pS4OLn48.cLwhf.cn
http://y6FWpBUU.cLwhf.cn
http://ZNgh3YGZ.cLwhf.cn
http://1IqqdKZn.cLwhf.cn
http://QSrUP5xZ.cLwhf.cn
http://p66Ko0wO.cLwhf.cn
http://nVMDWz06.cLwhf.cn
http://mkrpKd6a.cLwhf.cn
http://2Xutn5a0.cLwhf.cn
http://VbrbCIQJ.cLwhf.cn
http://1u49Rydr.cLwhf.cn
http://lsA4x6Eu.cLwhf.cn
http://a9gPE2fh.cLwhf.cn
http://www.dtcms.com/a/382067.html

相关文章:

  • python123机器学习基础练习1
  • 微信小程序坐标位置使用整理(四)map组件
  • 贪心算法在联邦学习客户端选择问题中的应用
  • 自增主键为何需要返回?
  • JDBC从入门到面试:全面掌握Java数据库连接技术
  • java本机电脑跳过2层网络连到客户内网远程调试方案
  • 基于多元线性回归、随机森林与神经网络的农作物元素含量预测及SHAP贡献量分析
  • MySQL数据库 -- 6.事务
  • CSS :has() 选择器详解:为什么它是“父选择器”?如何实现真正的容器查询?
  • 6-1ASPNETCoreWeb入门
  • 【文献笔记】PointWeb
  • Rupert Baines加入CSA Catapult董事会
  • 解密进程管理:从创建到回收全解析(基于Liunx操作系统)
  • 深度神经网络2——优化器选择、学习率消毒、正则化选择
  • 核心利润获现率
  • Nginx 502 网关错误:upstream 超时配置的踩坑与优化
  • (综述)视觉任务的视觉语言模型
  • 【C语言选择排序算法详解】+ 算法性能优化 + 动态演示实现
  • 基于Matlab硬币圆形检测的实现
  • go使用反射获取http.Request参数到结构体
  • vscode使用tmux技巧
  • 【Block总结】ConverseNet:神经网络中的反向卷积算子
  • C++学习记录(8)list
  • 【C++】STL·List
  • 网络安全与iptables防火墙配置
  • Django + Vue3 前后端分离技术实现自动化测试平台从零到有系列 <第一章> 之 注册登录实现
  • Flink面试题及详细答案100道(41-60)- 状态管理与容错
  • 从基础到高级:一文快速认识MySQL UPDATE 语句
  • 基于KAZE算法的织物图像拼接matlab仿真,对比SIFT和SURF
  • 知识输出零散没有体系怎么办