## 第一部分:Java入门与环境搭建
### 1. Java语言基础认知
**Q: Java是什么?Java之父是谁?目前属于哪家公司?**
**A:**
- **Java**是一门高级编程语言,1995年由Sun公司推出
- **Java之父**:詹姆斯·高斯林(James Gosling)
- **现属公司**:Oracle公司(2009年收购Sun公司)
- **名称来历**:原名Oak(橡树),因商标冲突改为Java(印度咖啡岛)
```java
// Java的标志性入门程序
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World"); // 向世界问好,开启编程之门
}
}
```2. Java技术体系平台
Q: Java技术体系分为哪三个平台?基础班和就业班分别学习哪个?
A:
| 平台 | 全称 | 说明 | 学习阶段 |
|---|---|---|---|
| Java SE | Standard Edition | 标准版,基础核心 | 基础班 |
| Java EE | Enterprise Edition | 企业版,企业级应用 | 就业班 |
| Java ME | Micro Edition | 小型版,移动设备(已淘汰) | 不学 |
// Java SE基础示例:控制台输出
System.out.println("这是Java SE基础语法");
// Java EE企业级应用示例(后续学习):Web应用开发
// 使用Spring Boot构建企业级互联网应用
3. JDK的组成与作用
Q: JDK由哪几部分组成?JVM、JRE、核心类库分别是什么?
A:
JDK(Java Development Kit) = 开发工具 + JRE
| 组成部分 | 全称 | 作用 |
|---|---|---|
| JVM | Java Virtual Machine | Java虚拟机,运行Java程序的地方,实现跨平台核心 |
| 核心类库 | Core API | Java自带的基础程序,供程序员调用 |
| JRE | Java Runtime Environment | 运行环境 = JVM + 核心类库 |
| 开发工具 | Development Tools | javac(编译)、java(运行)、javadoc等 |
// 开发流程:源代码 -> 编译 -> 字节码 -> JVM运行
// HelloWorld.java(人能看懂的高级语言)
javac HelloWorld.java // 编译工具javac:生成HelloWorld.class字节码
java HelloWorld // 运行工具java:JVM加载.class文件执行
4. 环境变量配置(Path与JAVA_HOME)
Q: 为什么要配置Path环境变量?JAVA_HOME的作用是什么?
A:
Path环境变量:记住程序路径,实现在任意目录下启动程序。
JAVA_HOME:告诉操作系统JDK安装位置,方便其他技术通过它找JDK。
# 配置前:必须在JDK的bin目录下才能使用javac/java
cd D:\develop\Java\jdk-21\bin
javac HelloWorld.java
# 配置Path后:任意目录下都能使用
cd C:\Users\Desktop
javac HelloWorld.java # 直接可用!
# JAVA_HOME配置(推荐方式)
JAVA_HOME = D:\develop\Java\jdk-21
Path中添加:%JAVA_HOME%\bin # 使用变量引用,升级JDK只需改JAVA_HOME
5. Java程序的跨平台原理
Q: Java如何实现"一次编译,处处运行"的跨平台特性?
A: 核心原理:JVM虚拟机
- Java程序编译为
.class字节码文件 - 不同操作系统安装对应的JVM(Windows版JVM、Linux版JVM、Mac版JVM)
- 字节码文件运行在JVM中,由JVM与底层操作系统交互
// 编译一次:生成与平台无关的字节码
javac HelloWorld.java // 生成HelloWorld.class
// 到处运行:不同平台的JVM都能执行同一个.class文件
// Windows: java HelloWorld -> Windows版JVM执行
// Linux: java HelloWorld -> Linux版JVM执行
// Mac: java HelloWorld -> Mac版JVM执行
第二部分:IDEA开发工具
6. IDEA工程结构(Project/Module/Package/Class)
Q: IDEA的工程结构是怎样的?Project、Module、Package、Class的关系是什么?
A: 四层结构,类似小区建筑:
| 层级 | 类比 | 本质 | 作用 |
|---|---|---|---|
| Project | 小区院子 | 文件夹 | 整个工程/项目 |
| Module | 楼栋 | 文件夹 | 功能模块划分 |
| Package | 楼层 | 文件夹 | 代码分类管理 |
| Class | 住户 | .java文件 | 实际写代码的地方 |
// 工程结构示例路径:
// Project: itheima-study
// └── Module: day01-basic
// └── src
// └── Package: com.itheima._01hello
// └── Class: HelloWorld.java
package com.itheima._01hello; // 包声明
public class HelloWorld { // 类声明
public static void main(String[] args) {
System.out.println("理解工程结构!");
}
}
7. IDEA常用快捷键
Q: IDEA中常用的快捷键有哪些?分别有什么作用?
A:
| 快捷键 | 作用 | 代码示例 |
|---|---|---|
psvm / main |
快速生成main方法 | public static void main(String[] args) {} |
sout |
快速生成输出语句 | System.out.println(); |
Ctrl+D |
复制当前行到下一行 | 快速复制代码行 |
Ctrl+Y / Ctrl+X |
删除当前行 | 快速删除代码 |
Ctrl+Alt+L |
格式化代码 | 自动调整代码缩进和格式 |
Ctrl+Shift+↑/↓ |
上下移动代码行 | 调整代码顺序 |
Ctrl+/ |
单行注释 | // 注释内容 |
Ctrl+Shift+/ |
多行注释 | /* 注释内容 */ |
public class ShortcutDemo {
public static void main(String[] args) { // 输入psvm或main回车
System.out.println("Hello"); // 输入sout回车
// Ctrl+D复制以下行
System.out.println("World");
// 结果:
// System.out.println("World");
// System.out.println("World");
// Ctrl+Shift+↑将本行上移
// Ctrl+/ 快速注释
}
}
8. IDEA类模板注释配置
Q: 如何配置IDEA的类模板注释?常用的模板变量有哪些?
A: 配置路径:Settings -> Editor -> File and Code Templates -> Class
// 推荐的类模板注释格式:
/**
* @Description ${NAME}
* @Author 你的名字
* @Date ${YEAR}-${MONTH}-${DAY}
*/
// 实际生成效果(创建Demo类时):
/**
* @Description Demo
* @Author songyu
* @Date 2026-01-25
*/
public class Demo {
// 类内容
}
常用模板变量:
${NAME}- 当前类名${YEAR}- 当前年份${MONTH}- 当前月份${DAY}- 当前日期${TIME}- 当前时间
第三部分:Java基础语法
9. 注释的三种类型
Q: Java中有哪三种注释?各自的特点和使用场景是什么?
A:
| 类型 | 格式 | 特点 | 使用场景 |
|---|---|---|---|
| 单行注释 | // 内容 |
只注释一行 | 简单说明 |
| 多行注释 | /* 内容 */ |
可注释多行 | 临时屏蔽代码块 |
| 文档注释 | /** 内容 */ |
可生成API文档 | 类、方法说明 |
package com.itheima._02注释;
/**
* @Description Demo021
* @Author songyu
* @Date 2026-01-25 16:58
*
* 这是文档注释:用于类上面,可生成API文档
*/
public class Demo021 {
/**
* 这是文档注释:用于方法上面
* @param args 命令行参数
*/
public static void main(String[] args) {
// 单行注释:只能注释一行,解释下面代码的作用
System.out.println("Hello World");
/*
* 多行注释:可以注释多行
* 常用于临时屏蔽一段代码
* System.out.println("这行被注释了");
*/
// 注意:只有源码有注释,.class字节码中没有注释,注释不影响程序运行
}
}
10. 字面量的六种类型
Q: Java中常用的字面量有哪些类型?各自的格式要求是什么?
A:
| 类型 | 格式要求 | 示例 | 注意事项 |
|---|---|---|---|
| 整数 | 直接写数字 | 123, -99 |
无前缀 |
| 小数 | 带小数点 | 3.14, -0.5 |
浮点数 |
| 字符 | 单引号包裹,只有一个字符 | 'A', '中', ' ' |
单引号!必须有且仅有一个 |
| 字符串 | 双引号包裹 | "Hello", "中国" |
双引号!可有多个字符 |
| 布尔 | true/false |
true, false |
小写,只有这两个值 |
| 空值 | null |
null |
不能直接输出 |
public class LiteralDemo {
public static void main(String[] args) {
// 整数
System.out.println(123);
System.out.println(-99);
// 小数
System.out.println(3.1415926);
// 字符:单引号,有且仅有一个字符
System.out.println('A'); // ✓
System.out.println('中'); // ✓
System.out.println(' '); // ✓ 空格也是字符
// System.out.println(''); // ✗ 错误:没有字符
// System.out.println('AB'); // ✗ 错误:两个字符
// 字符串:双引号,可有任意个字符
System.out.println("Hello World");
System.out.println(""); // ✓ 空字符串
System.out.println("A"); // ✓ 一个字符也是字符串
// 布尔
System.out.println(true);
System.out.println(false);
// 空值:不能直接输出!
// System.out.println(null); // 编译报错!
// 特殊字符:转义字符
System.out.println("姓名\t张三"); // \t = tab制表符
System.out.println("第一行\n第二行"); // \n = 换行
}
}
11. 变量的定义与使用
Q: 什么是变量?变量的定义格式是什么?如何修改变量的值?
A: 变量是内存中的一块区域(小盒子),用于存储程序要处理的数据。
定义格式:数据类型 变量名 = 初始值;
public class VariableDemo {
public static void main(String[] args) {
// 1. 定义变量:数据类型 变量名 = 值;
int money = 100; // 定义int类型变量money,存100
int age = 20; // 定义int类型变量age,存20
String name = "黑马程序员"; // 定义String类型变量name
// 2. 使用变量:直接通过变量名获取值
System.out.println(money); // 输出:100
System.out.println(age); // 输出:20
System.out.println(name); // 输出:黑马程序员
// 3. 修改变量的值:变量名 = 新值;
age = 22; // 直接赋新值
System.out.println(age); // 输出:22
age = age + 1; // 在原有值基础上计算
System.out.println(age); // 输出:23
name = "AI智能应用开发"; // 字符串也可以修改
System.out.println(name); // 输出:AI智能应用开发
// 变量的核心特点:值可以变化(可变)
}
}
12. 变量使用的注意事项(重点)
Q: 使用变量时有哪些重要注意事项?
A:
| 注意事项 | 说明 | 错误示例 |
|---|---|---|
| 先声明后使用 | 变量必须先定义才能使用 | System.out.println(age); // age未定义 |
| 类型匹配 | 什么类型变量存什么类型数据 | int age = true; // 类型不匹配 |
| 作用域限制 | 只在定义它的 {}内有效 |
在大括号外访问内部定义的变量 |
| 不能重名 | 同一作用域内变量名唯一 | int age = 20; int age = 30; // 重名 |
| 使用前初始化 | 可以定义时不赋值,但使用前必须赋值 | int a; System.out.println(a); // 未初始化 |
public class VariableNotice {
public static void main(String[] args) {
// 1. 变量要先声明才能使用
// System.out.println(age); // 编译报错:找不到符号age
// 2. 变量是什么类型,就必须装什么类型的数据
// int age = true; // 编译报错:不兼容的类型
// 3. 变量从定义开始到"}"截止的范围内有效(作用域)
{
int innerVar = 10;
System.out.println(innerVar); // ✓ 在大括号内可用
}
// System.out.println(innerVar); // ✗ 编译报错:超出作用域
// 4. 同一个{}范围内,变量名不能重复
int age = 20;
// int age = 22; // 编译报错:已在方法 main中定义了变量 age
// 5. 变量定义时可以不赋初始值,但使用前必须有值
int a, b, c; // 同时定义3个变量,都没赋值,合法
// System.out.println(a); // 编译报错:可能尚未初始化变量a
a = 10; // 使用前赋值
System.out.println(a); // ✓ 输出:10
}
int age = 40; // 与main中的age不在同一作用域,不冲突
// int a = age; // 编译报错:main中的age不能访问
}
13. 入门程序常见错误汇总
Q: 编写第一个Java程序时常见的错误有哪些?如何避免?
A:
| 错误类型 | 错误示例 | 正确写法 | 排查方法 |
|---|---|---|---|
| 文件未保存 | 修改后未Ctrl+S | 保存后再编译 | 看文件名是否有*号 |
| 扩展名未显示 | 实际是 HelloWorld.java.txt |
设置显示文件扩展名 | 文件夹选项勾选"文件扩展名" |
| 文件名与类名不一致 | HelloWorld.java vs class Helloworld |
必须完全一致(包括大小写) | 检查public class后的名字 |
| 大小写错误 | string, system |
String, System |
Java严格区分大小写 |
| 主方法写错 | mian, main() |
main, main(String[] args) |
必须是 public static void main |
| 中文符号 | ;(中文分号) |
;(英文分号) |
检查标点符号是否为英文 |
| 括号不匹配 | 少写 }或 ) |
成对编写括号 | IDE会红色提示 |
// 错误示例1:类名与文件名不一致
// 文件名:HelloWorld.java
public class helloworld { // 错误:应为HelloWorld(W大写)
public static void main(String[] args) {
System.out.println("Hello");
}
}
// 错误示例2:大小写错误
public class HelloWorld {
public static void main(string[] args) { // 错误:应为String(S大写)
system.out.println("Hello"); // 错误:应为System(S大写)
}
}
// 错误示例3:主方法写错
public class HelloWorld {
public static void mian(String[] args) { // 错误:mian应为main
System.out.println("Hello");
}
}
// 错误示例4:中文符号
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello"); // 错误:中文分号,应为;
}
}
// 正确写法
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}