Java入门应先写可运行小程序,在报错中理解机制:用命令行编译运行、掌握集合泛型、try-with-resources自动关流、优先学基础API而非框架。

Java 入门不靠死记语法,而在于快速写出能跑起来的小程序,并在报错中建立对语言机制的真实感知。别从《Java编程思想》开始,也别一上来就啃JVM——先让 main 方法输出一行字,再让它读一个文件、算一组数、连一次数据库。
从 javac + java 命令开始,绕过IDE自动补全
新手用 IntelliJ 或 Eclipse 容易误以为“代码没红色波浪线=写对了”,其实只是 IDE 在帮你遮掩类路径、模块名、主类声明等底层细节。建议前两周强制用命令行:
- 用记事本或 VS Code 写
HelloWorld.java,手动javac HelloWorld.java编译 - 确认生成
HelloWorld.class后,再用java HelloWorld运行(注意没有.class后缀) - 故意删掉
public static void main(String[] args),看Error: Main method not found是怎么冒出来的 - 把类名改成
helloworld(小写),观察javac不报错但java helloworld找不到类——理解大小写敏感和类名/文件名强绑定
用 ArrayList 和 HashMap 替代数组练手,别碰 Vector 或 HashTable
集合是 Java 最常被误用的部分。新手容易卡在“数组下标越界”或“空指针”,而现代 Java 的标准解法其实是避开原始数组:
-
ArrayList自动扩容,用list.add()插入比arr[i] = x更贴近真实业务逻辑 -
HashMap查名字找学号、查商品ID找价格,比双重 for 循环遍历数组快得多,也更符合思考习惯 - 刻意不用
Vector(同步开销大)、HashTable(已过时),避免形成“Java集合都线程安全”的错误直觉 - 写个小程序:读取文本里每行的单词,用
HashMap统计词频——这个任务天然适合泛型+集合,且能暴露null处理、字符串equals()vs==等关键坑
用 try-with-resources 写文件读写,别手动 close()
资源泄漏是初学者最隐蔽的错误之一。用传统 try-catch-finally 手动关流,十次有八次会漏掉 finally 里的判空或嵌套异常吞并。直接上语法糖:
try (FileReader fr = new FileReader("data.txt");
BufferedReader br = new BufferedReader(fr)) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
这段代码里 br 和 fr 会在离开 try 块时自动关闭,哪怕中间抛出异常。重点记住:FileReader、BufferedReader、FileInputStream 等都实现了 AutoCloseable 接口,才支持这个语法。
立即学习“Java免费学习笔记(深入)”;
写一个带 main 的类去调用 Spring Boot 的 @RestController?别这么做
刚学会 System.out.println 就去拉 Spring Boot Starter,等于还没学会骑自行车就去调校变速器。Spring 的核心价值是解耦和托管生命周期,不是“让 Hello World 多按一次 Run”。真正该优先掌握的是:
- 如何用
Scanner从控制台读用户输入 - 如何用
LocalDateTime.now()获取当前时间并格式化 - 如何用
Files.readAllLines(Paths.get("x.txt"))读文本(Java 7+) - 如何把几个
static方法组织成工具类,比如StringUtils.isEmail(String)
这些才是每天高频出现的代码形态。框架只是把这类操作包装得更松耦合,但前提是得先知道“要解耦的是什么”。










