第1章 第一阶段导学:零基础怎么学 Java

第1章 第一阶段导学:零基础怎么学 Java

很多人学 Java 的第一步就走偏了。

有人一上来安装 IDEA,创建 Maven 项目,复制一段 public static void main,程序能跑,但不知道 main 是什么。有人直接学 Spring Boot,看见 Controller、Service、Repository 这些词,以为自己在学 Java,实际是在背框架结构。还有人从 Android 转过来,只会在 Activity 里写几行业务代码,但离开 Android Studio 就不知道 Java 程序怎么运行。

这套教程重新从第一阶段开始,就是为了先把地基打稳。

第一阶段不讲框架,不讲复杂设计模式,不讲 JVM 调优。第一阶段只解决一个问题:让你能独立写、运行、理解一个基础 Java 程序。

一、Java 到底适合做什么

Java 是一门通用编程语言。它常见于:

  • Android 早期开发和大量存量项目。
  • 企业后端服务。
  • 大数据生态。
  • 桌面工具。
  • 金融、电商、物流等长期维护系统。
  • 学校编程基础课程。

Java 的特点不是"写起来最短",而是:

  • 结构清楚。
  • 类型严格。
  • 工具成熟。
  • 生态庞大。
  • 适合大型工程长期维护。

这也是为什么 Java 看起来比 Python 啰嗦。Python 可以直接写:

python 复制代码
print("hello")

Java 要写:

java 复制代码
public class Hello {
    public static void main(String[] args) {
        System.out.println("hello");
    }
}

这份啰嗦不是为了折磨你。Java 强制你从一开始就接触类、方法、类型、编译、运行这些概念。刚学时慢,后面进入大型项目时反而更稳。

二、零基础学 Java 最容易卡在哪里

1. 看见固定写法就背,不理解

很多人会背:

java 复制代码
public static void main(String[] args)

但不知道为什么必须这么写。结果一旦方法名写错、static 漏掉、类名和文件名不一致,就不知道怎么办。

本教程不会要求你第一天就理解 public static void 的全部细节,但会告诉你哪些先当固定入口,哪些后面会拆开讲。

2. 不会看错误

新手最怕:

text 复制代码
Error: Could not find or load main class

或者:

text 复制代码
';' expected

其实错误信息是学习 Java 的一部分。不会看错误,就永远只能复制正确代码。一旦自己写就崩。

所以每章都会专门讲常见错误。

3. 只学语法,不知道场景

比如学 if:

java 复制代码
if (a > b) {
}

语法会了,但不知道它能做什么。真实项目里 if 用来判断登录、权限、库存、支付状态、输入是否合法。

本教程会尽量用业务场景讲语法。

4. 过早学习框架

框架能提高效率,但框架不是基础。你连类、对象、接口、异常、集合都不熟,直接学 Spring 或 Android,会觉得所有东西都是魔法。

第一阶段不碰框架,就是为了让你知道程序本身如何工作。

三、第一阶段要学到什么程度

第一阶段包括:

  1. Java 程序怎么运行。
  2. 变量、类型、表达式。
  3. 输入输出。
  4. 条件判断。
  5. 循环。
  6. 方法。
  7. 第一阶段项目。

学完后你应该能做到:

  • 自己创建 .java 文件。
  • 用命令行编译和运行。
  • 能解释 .java.class 的区别。
  • 能写变量、条件、循环。
  • 能把重复逻辑拆成方法。
  • 能看懂基础编译错误和运行时错误。
  • 能写一个命令行成绩统计器。

注意,这个阶段还不要求你掌握面向对象。类和对象会在第二阶段讲。第一阶段只需要把"程序如何按步骤执行"搞明白。

四、学习 Java 的正确动作

不要只看文章。每章你都要做四件事。

1. 手敲代码

不要复制。复制能跑不代表你会。手敲时你会遇到拼写、标点、大小写、括号、分号错误,这些错误本身就是训练。

Java 对大小写敏感:

java 复制代码
System.out.println("hello");

不能写成:

java 复制代码
system.out.println("hello");

System 首字母必须大写。

2. 故意改错

比如学完第一段程序后,你要故意:

  • 删除分号。
  • 改错类名。
  • 改错文件名。
  • 删除 main。
  • String 写成 string

观察报错。这样以后真实报错时你不会慌。

3. 写自己的例子

不要只运行教程里的"Tom、Jack"。你可以写自己的姓名、年龄、城市、成绩、商品价格。数据一换,你就会发现自己是否真的理解了。

4. 做阶段项目

只学碎片知识,很容易忘。阶段项目会强迫你把知识串起来。第一阶段项目是命令行成绩统计器,它会用到变量、输入、条件、循环、方法。

五、第一阶段的学习地图

#mermaid-svg-JjlFKfK61IzWTEy1{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-JjlFKfK61IzWTEy1 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-JjlFKfK61IzWTEy1 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-JjlFKfK61IzWTEy1 .error-icon{fill:#552222;}#mermaid-svg-JjlFKfK61IzWTEy1 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JjlFKfK61IzWTEy1 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-JjlFKfK61IzWTEy1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JjlFKfK61IzWTEy1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JjlFKfK61IzWTEy1 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-JjlFKfK61IzWTEy1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JjlFKfK61IzWTEy1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JjlFKfK61IzWTEy1 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JjlFKfK61IzWTEy1 .marker.cross{stroke:#333333;}#mermaid-svg-JjlFKfK61IzWTEy1 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JjlFKfK61IzWTEy1 p{margin:0;}#mermaid-svg-JjlFKfK61IzWTEy1 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-JjlFKfK61IzWTEy1 .cluster-label text{fill:#333;}#mermaid-svg-JjlFKfK61IzWTEy1 .cluster-label span{color:#333;}#mermaid-svg-JjlFKfK61IzWTEy1 .cluster-label span p{background-color:transparent;}#mermaid-svg-JjlFKfK61IzWTEy1 .label text,#mermaid-svg-JjlFKfK61IzWTEy1 span{fill:#333;color:#333;}#mermaid-svg-JjlFKfK61IzWTEy1 .node rect,#mermaid-svg-JjlFKfK61IzWTEy1 .node circle,#mermaid-svg-JjlFKfK61IzWTEy1 .node ellipse,#mermaid-svg-JjlFKfK61IzWTEy1 .node polygon,#mermaid-svg-JjlFKfK61IzWTEy1 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-JjlFKfK61IzWTEy1 .rough-node .label text,#mermaid-svg-JjlFKfK61IzWTEy1 .node .label text,#mermaid-svg-JjlFKfK61IzWTEy1 .image-shape .label,#mermaid-svg-JjlFKfK61IzWTEy1 .icon-shape .label{text-anchor:middle;}#mermaid-svg-JjlFKfK61IzWTEy1 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-JjlFKfK61IzWTEy1 .rough-node .label,#mermaid-svg-JjlFKfK61IzWTEy1 .node .label,#mermaid-svg-JjlFKfK61IzWTEy1 .image-shape .label,#mermaid-svg-JjlFKfK61IzWTEy1 .icon-shape .label{text-align:center;}#mermaid-svg-JjlFKfK61IzWTEy1 .node.clickable{cursor:pointer;}#mermaid-svg-JjlFKfK61IzWTEy1 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-JjlFKfK61IzWTEy1 .arrowheadPath{fill:#333333;}#mermaid-svg-JjlFKfK61IzWTEy1 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-JjlFKfK61IzWTEy1 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-JjlFKfK61IzWTEy1 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JjlFKfK61IzWTEy1 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-JjlFKfK61IzWTEy1 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JjlFKfK61IzWTEy1 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-JjlFKfK61IzWTEy1 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-JjlFKfK61IzWTEy1 .cluster text{fill:#333;}#mermaid-svg-JjlFKfK61IzWTEy1 .cluster span{color:#333;}#mermaid-svg-JjlFKfK61IzWTEy1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-JjlFKfK61IzWTEy1 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-JjlFKfK61IzWTEy1 rect.text{fill:none;stroke-width:0;}#mermaid-svg-JjlFKfK61IzWTEy1 .icon-shape,#mermaid-svg-JjlFKfK61IzWTEy1 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JjlFKfK61IzWTEy1 .icon-shape p,#mermaid-svg-JjlFKfK61IzWTEy1 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-JjlFKfK61IzWTEy1 .icon-shape .label rect,#mermaid-svg-JjlFKfK61IzWTEy1 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JjlFKfK61IzWTEy1 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-JjlFKfK61IzWTEy1 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-JjlFKfK61IzWTEy1 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Java程序运行
变量和类型
输入和输出
条件判断
循环
方法
成绩统计器项目

为什么这个顺序合理?

先知道程序怎么运行,否则你连代码在哪里执行都不清楚。

再学变量和类型,因为程序处理的是数据。

有了数据,再学输入输出,让程序能和人互动。

然后学条件和循环,让程序不只是顺序执行。

最后学方法,把复杂逻辑拆开。

阶段项目把它们串起来。

六、你需要准备什么

最少需要:

  • 一台电脑。
  • JDK。
  • 一个文本编辑器或 IDE。
  • 终端。

推荐先用命令行跑几次:

bash 复制代码
javac Hello.java
java Hello

再使用 IDE。原因是:IDE 会帮你隐藏很多细节,但初学时你需要知道这些细节存在。否则遇到 classpath、包名、编译失败时,只会在界面上乱点。

七、第一阶段不要追求什么

不要追求:

  • 一开始就写很大项目。
  • 一开始就学 Spring Boot。
  • 一开始就学 Android。
  • 一开始就背设计模式。
  • 一开始就研究 JVM 参数。
  • 一开始就写复杂算法。

这些后面都可以学,但顺序不能乱。

第一阶段只追求:

  • 能运行。
  • 能理解。
  • 能修改。
  • 能排错。
  • 能用基础语法写小程序。

八、本章练习

  1. 用自己的话解释:为什么 Java 看起来比 Python 啰嗦?

  2. 写下你认为第一阶段最重要的 3 个目标。

  3. 准备一个练习目录,例如:

text 复制代码
java-course/
  stage1/
    chapter01/
  1. 尝试在终端进入这个目录。

  2. 记录你当前电脑上是否已经安装 JDK。如果没有,下一章再处理。

九、本章总结

第一阶段是 Java 学习的地基。地基不稳,后面所有框架都会变成复制粘贴。

你现在要建立几个观念:

  • Java 适合长期维护的大型工程。
  • Java 的结构感来自类、方法、类型和编译运行模型。
  • 零基础不要过早学框架。
  • 报错信息是学习的一部分。
  • 每章都必须手敲、改错、练习。
  • 第一阶段目标是写出能运行、能理解、能排查的小程序。

下一章开始,我们正式写第一个 Java 程序,并把 .java.class、JDK、JVM、main 方法一次讲清楚。