1. Java学习笔记1.1:从零开始的开发环境搭建
刚接触Java的新手常会遇到各种环境配置问题。记得我第一次安装JDK时,花了整整两天才搞明白PATH和JAVA_HOME的区别。这份笔记将系统梳理Java开发环境的搭建要点,帮你避开那些教科书上不会写的坑。
Java作为一门跨平台的面向对象语言,其"一次编写,到处运行"的特性依赖于JVM(Java虚拟机)的实现。这意味着我们需要先配置好运行环境,才能开始编写第一个"Hello World"。下面从JDK选择到IDE配置,我会结合自己踩过的坑,详细说明每个环节的操作要点。
2. JDK安装与环境变量配置
2.1 JDK版本选择策略
目前Oracle JDK和OpenJDK是两大主流选择。对于学习者,我推荐使用OpenJDK:
- 完全开源免费
- 与Oracle JDK功能基本一致
- 社区支持活跃
具体版本建议选择LTS(长期支持)版本,目前最新的是JDK 17。避免使用非LTS版本,因为半年后就会停止更新。安装包可以从Adoptium(原AdoptOpenJDK)官网获取,记得选择与操作系统匹配的版本。
注意:不要从不明来源下载JDK,某些修改版可能包含恶意代码。官方镜像才是最安全的选择。
2.2 安装过程中的关键选项
Windows系统安装时要注意:
- 安装路径不要包含中文或空格(默认的Program Files就不太理想)
- 建议单独创建如C:\Java\jdk-17这样的目录
- 不要勾选"公共JRE"选项,现代IDE都不再需要单独安装JRE
macOS用户可以通过Homebrew更简单地安装:
bash复制brew install openjdk@17
Linux用户推荐使用包管理器,例如Ubuntu:
bash复制sudo apt install openjdk-17-jdk
2.3 环境变量配置详解
环境变量配置是新手最容易出错的地方。需要设置两个关键变量:
-
JAVA_HOME:指向JDK安装目录
- Windows示例:C:\Java\jdk-17
- macOS/Linux示例:/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
-
PATH:添加%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(macOS/Linux)
配置完成后,在终端验证:
bash复制java -version
javac -version
应该显示相同的版本号。如果出现"不是内部或外部命令"错误,说明PATH设置有问题。
常见问题:安装多个JDK时,系统会默认使用PATH中找到的第一个。可以用
/usr/libexec/java_home -V(macOS)或update-alternatives --config java(Linux)来切换版本。
3. IDE的选择与配置
3.1 IntelliJ IDEA社区版安装
虽然可以用记事本写Java代码,但专业的IDE能极大提升效率。IntelliJ IDEA是当前Java开发者的首选:
- 下载社区版(免费):https://www.jetbrains.com/idea/download/
- 安装时注意:
- 关联.java文件(方便双击打开)
- 创建桌面快捷方式
- 勾选"Add launchers dir to PATH"(方便终端启动)
首次启动后,建议进行以下配置:
- 主题和字体:Settings → Appearance & Behavior → Appearance
- 编码格式:Settings → Editor → File Encodings → 全部设为UTF-8
- 自动导包:Settings → Editor → General → Auto Import → 勾选"Add unambiguous imports on the fly"
3.2 创建第一个项目
在IDEA中新建项目时:
- 选择"New Project"
- 项目类型选"Java"
- 确保Project SDK显示正确的JDK版本
- 不要勾选"Create project from template"
- 项目名称建议用全小写+下划线风格,如java_learning
创建完成后,右键src文件夹 → New → Java Class,输入类名HelloWorld。IDEA会自动生成类模板:
java复制public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
右键点击编辑器 → Run 'HelloWorld.main()',就能在底部看到输出结果。
3.3 解决Lombok兼容问题
当项目中使用Lombok时,可能会遇到"you aren't using a compiler supported by lombok"警告。解决方法:
- 确保安装了Lombok插件:
- File → Settings → Plugins → 搜索Lombok → 安装
- 启用注解处理:
- Settings → Build, Execution, Deployment → Compiler → Annotation Processors
- 勾选"Enable annotation processing"
- 在pom.xml中添加依赖(Maven项目):
xml复制<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
4. 核心概念快速入门
4.1 Java程序的基本结构
一个最简单的Java程序包含三个关键部分:
java复制// 类声明:文件名必须与公共类名一致
public class Main {
// main方法是程序入口
public static void main(String[] args) {
// 执行语句
System.out.println("这是我的第一个Java程序");
}
}
重要规则:
- 一个.java文件只能有一个public类
- 类名应采用大驼峰命名法(如MyFirstProgram)
- main方法必须严格按public static void main(String[] args)的格式
4.2 基础数据类型与变量
Java有8种基本数据类型:
| 类型 | 大小 | 取值范围 | 默认值 |
|---|---|---|---|
| byte | 8位 | -128 ~ 127 | 0 |
| short | 16位 | -32768 ~ 32767 | 0 |
| int | 32位 | -2³¹ ~ 2³¹-1 | 0 |
| long | 64位 | -2⁶³ ~ 2⁶³-1 | 0L |
| float | 32位 | IEEE 754标准 | 0.0f |
| double | 64位 | IEEE 754标准 | 0.0d |
| char | 16位 | Unicode字符 | '\u0000' |
| boolean | - | true/false | false |
变量声明示例:
java复制int age = 25; // 声明并初始化
double price;
price = 19.99; // 先声明后赋值
final double PI = 3.14159; // 常量使用final修饰
编程习惯:变量名使用小驼峰命名法(如studentName),常量全大写+下划线(如MAX_SIZE)
4.3 控制流程基础
if-else语句:
java复制int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
for循环:
java复制for (int i = 0; i < 5; i++) {
System.out.println("当前是第" + (i+1) + "次循环");
}
while循环:
java复制int count = 3;
while (count > 0) {
System.out.println(count);
count--;
}
5. 学习路线建议与资源推荐
5.1 新手常见误区
根据我的教学经验,初学者容易陷入这些误区:
- 过早追求框架学习(如Spring),忽视Java基础
- 只看不写,没有实际编码练习
- 遇到问题直接找完整答案,不尝试自己解决
- 不重视代码规范和风格
- 忽略文档阅读(JDK API文档是最佳参考资料)
5.2 分阶段学习建议
第一阶段(1-2周):
- 掌握基础语法(变量、运算符、流程控制)
- 理解面向对象三大特性(封装、继承、多态)
- 练习数组和String的基本操作
- 熟悉常用工具类(Math, Random, Scanner等)
第二阶段(3-4周):
- 深入集合框架(List, Set, Map)
- 掌握异常处理机制
- 学习IO流操作
- 了解多线程基础
第三阶段(5-6周):
- 泛型编程
- 反射机制
- 注解使用
- 网络编程基础
5.3 优质学习资源
免费资源:
- Oracle官方Java教程:https://docs.oracle.com/javase/tutorial/
- Java编程思想在线版(虽然有点旧,但概念讲解很透彻)
- MOOC中国上的浙江大学Java课程
付费推荐:
- 《Java核心技术 卷I》(Cay Horstmann著)
- 《Effective Java》(Joshua Bloch著)
- 极客时间的Java相关专栏
练习平台:
- LeetCode(从简单题开始)
- 牛客网Java专项练习
- CodingBat的Java练习
6. 开发中的实用技巧
6.1 调试技巧
IDEA提供了强大的调试功能:
- 打断点:点击行号左侧空白处
- 开始调试:右键 → Debug
- 常用调试操作:
- Step Over(F8):逐行执行
- Step Into(F7):进入方法内部
- Evaluate Expression(Alt+F8):查看或计算表达式的值
- 条件断点:右键断点 → 设置条件
6.2 代码优化建议
- 使用StringBuilder代替String拼接:
java复制// 不好的写法
String result = "";
for (int i = 0; i < 100; i++) {
result += i;
}
// 好的写法
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++) {
sb.append(i);
}
String result = sb.toString();
- 避免不必要的对象创建:
java复制// 不好的写法
for (int i = 0; i < 1000; i++) {
String s = new String("hello"); // 创建1000个对象
}
// 好的写法
String constant = "hello";
for (int i = 0; i < 1000; i++) {
String s = constant; // 复用同一个对象
}
6.3 常见错误排查
-
NullPointerException:
- 检查对象是否初始化
- 使用Optional类避免空指针
- 启用IDEA的@NotNull注解检查
-
ClassNotFoundException:
- 检查类路径是否正确
- 确认jar包是否已导入
- 清理并重新构建项目
-
编码问题:
- 统一使用UTF-8编码
- 在文件读写时指定编码
- 设置JVM参数:-Dfile.encoding=UTF-8
在实际项目中,我习惯使用日志记录器(如SLF4J+Logback)替代System.out.println,这样可以更灵活地控制输出级别和格式。初期可能会觉得配置麻烦,但随着项目规模扩大,规范的日志系统会极大提升调试效率。
