面向程序员的java教程-入门篇01:java语法

发表于 2026-03-24 20:35 1961 字 10 min read

This post is not yet available in English. Showing the original.
这是一个面向有编程基础,又急需快速上手java的人群的教程。 这个大章节是入门篇,将会使用最简单最高效的方式让你学会如何编写java代码,从零开始到成为一名及格的cruder! java版本选择 截止到发稿日,java最高版本是26。其中目前的LTS版本分别为8,11,17,21,25。 对于这些版本不得不说的一个点是,版本已经发展这么多了,但是8依然很坚挺。...

这是一个面向有编程基础,又急需快速上手java的人群的教程。

这个大章节是入门篇,将会使用最简单最高效的方式让你学会如何编写java代码,从零开始到成为一名及格的cruder!

java版本选择

截止到发稿日,java最高版本是26。其中目前的LTS版本分别为8,11,17,21,25。

对于这些版本不得不说的一个点是,版本已经发展这么多了,但是8依然很坚挺。

首先是因为,java8可以说是一个重要分水岭版本,引入了lambda表达式、Stream流、函数式编程等特性,使java从传统的命令式编程逐步向函数式编程范式转变。

从目前国内的情况来看,很多公司仍然在使用java8进行开发,这主要是由于历史项目沉淀较多、升级成本较高,以及生态和框架对java8的支持已经非常稳定。

当然新版本也带来了很多的优化和新特性,比如G1垃圾收集器的持续优化、ZGC等低延迟垃圾回收器,以及虚拟线程的引入,一些语法糖的引入等。不过这些都是后话。

这个教程将会以java8来写。因为搞懂了最基本的java8,新版本的java只需要学习一下新特性就可以运用自如了。

安装java

一笔带过了,网上一大堆,下面是gemini写的教程,看着装吧:

展开查看安装教程

Windows 篇

1. 下载与安装

  1. 前往 Oracle 官网Adoptium 下载 Windows 版安装包(推荐 .msi.exe)。
  2. 运行安装程序,建议保持默认安装路径:C:\Program Files\Java\jdk-<版本号>

2. 配置环境变量

  1. 打开设置:右键点击“此电脑” -> 属性 -> 高级系统设置 -> 环境变量
  2. 新建系统变量 JAVA_HOME
    • 点击“系统变量”下的“新建”。
    • 变量名:JAVA_HOME
    • 变量值:C:\Program Files\Java\jdk-21(请根据你的实际版本路径填写)。
  3. 编辑 Path 变量
    • 在“系统变量”列表中找到 Path,点击“编辑”。
    • 点击“新建”,输入:%JAVA_HOME%\bin
    • 点击“确定”保存所有窗口。

3. 验证安装

打开命令提示符 (CMD) 或 PowerShell,输入:

java -version
javac -version

macOS 篇

1. 下载与安装

  1. 根据你的芯片类型(Intel 或 Apple Silicon/M1/M2/M3/M4)下载对应的 .dmg 安装包。
  2. 双击运行 .pkg 文件,按照提示完成安装。

2. 配置环境变量

macOS 默认使用 Zsh 终端,配置步骤如下:

  1. 打开终端,执行以下命令打开配置文件:

    nano ~/.zshrc
  2. 添加配置内容: 在文件末尾添加以下两行(利用 macOS 内置工具动态获取路径):

    export JAVA_HOME=$(/usr/libexec/java_home)
    export PATH=$JAVA_HOME/bin:$PATH
  3. 保存并生效

    • 按下 Ctrl + O,回车保存。
    • 按下 Ctrl + X 退出。
    • 执行生效命令:source ~/.zshrc

3. 验证安装

在终端中输入:

java -version

💡 常用提示

  • 多版本管理:如果你安装了多个版本的 JDK,macOS 可以通过 /usr/libexec/java_home -V 查看所有路径。
  • IDE 关联:在 IntelliJ IDEA 或 VS Code 中,通常需要手动指定 JAVA_HOME 路径以确保项目编译环境一致。

java的基础语法

本着Talk is cheap. Show me the code.原则,后面将会大部分通过代码来说明。

首先要说明的是,java是一个强面向对象的语言,无论你做什么事情,都必须通过编写类来做。

比如hello world应该这么写:

// 通过class关键字定义类,Hello为类名 
public class Hello {
  
  // main方法的定义,所有java程序都需要通过这样一个main方法作为起点来调用
  public static void main(String[] args) {
    System.out.println("Hello world!");
  }

}

以上代码保存为Hello.java,注意文件名必须跟类名一致。之后就可以运行了。

运行方式如下,在命令行输入以下命令:

# 编译Hello.java文件
javac Hello.java
# 编译成功后会生成一个Hello.class文件
# 然后运行
java Hello

来,动手写起来。执行成功后就能看到显示Hello world!字样了。

对象

下面的例子是通过创建对象调用对应的方法(函数)

// 定义Cat.java文件
public class Cat {

  // 类属性定义,一般类属性都会加上private作为修饰符,通过private修饰的属性只能通过自身修改或读取。这么写的用意主要是做一些权限的控制。
  private String name;
  private Integer age;

  // 构造方法,当通过new来创建对象时,会调用这个方法
  public Cat(String name, Integer age) {
    this.name = name;
    this.age = age;
  }

  // 对象方法,创建对象后,就可以通过对象来调用了。
  public void introduce() {
    System.out.println("My name is " + name + ", and I'm " + age + " years old. Meow~");
  }

}

// 定义Main.java文件
public class Main {

  public static void main(String[] args) {
    // 通过new来构造Cat类的对象
    // 其中要通过Cat cat这样的方式来定义对象名来接收new Cat(...)所构造的对象。
    Cat cat = new Cat("小叮当", 1000);
    // 调用introduce()方法
    cat.introduce();
  }

}

然后老样子执行命令:

# 编译Main.java
javac Main.java
# 把这两个类放一起,因为Main类里用到了Cat类,它会同时编译Main和Cat,会同时生成Main.class和Cat.class
# 运行
java mains

好了,最基础的语法你已经懂了,接下来就是各种乱七八糟的循环啊,条件判断啊,那些了,就简单以代码形式介绍一遍:

展开查看

变量与常量

int num = 10;         // 变量
final int MAX = 100;  // 常量(不可修改)

运算符

int a = 10;
int b = 3;

// 算术运算
System.out.println(a + b); // 13
System.out.println(a - b); // 7
System.out.println(a * b); // 30
System.out.println(a / b); // 3
System.out.println(a % b); // 1

// 自增
a++;
++a;

// 比较运算
System.out.println(a > b);
System.out.println(a == b);

// 逻辑运算
System.out.println(true && false);
System.out.println(true || false);
System.out.println(!true);

流程控制

if-else

int score = 85;

if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}

switch

int day = 3;

switch (day) {
    case 1:
        System.out.println("周一");
        break;
    case 2:
        System.out.println("周二");
        break;
    default:
        System.out.println("其他");
}

循环

for

for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

while

int i = 0;
while (i < 5) {
    System.out.println(i);
    i++;
}

数组

int[] arr = new int[3];
arr[0] = 1;
arr[1] = 2;

int[] arr2 = {1, 2, 3};

// 遍历
for (int i = 0; i < arr2.length; i++) {
    System.out.println(arr2[i]);
}

// 增强 for
for (int num : arr2) {
    System.out.println(num);
}

面向对象基础

继承

class Animal {
    void eat() {
        System.out.println("吃东西");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("汪汪");
    }
}

多态

Animal a = new Dog();
a.eat();  // 调用父类方法

String 常用操作

String str = "hello";

System.out.println(str.length());
System.out.println(str.charAt(0));
System.out.println(str.substring(1, 3));
System.out.println(str.equals("hello"));

集合(常用)

List

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");

for (String s : list) {
    System.out.println(s);
}

Set

Set<String> set = new HashSet<>();
set.add("A");
set.add("A"); // 不会重复

Map

Map<String, String> map = new HashMap<>();
map.put("name", "Tom");

System.out.println(map.get("name"));

异常处理

try {
    int a = 1 / 0;
} catch (Exception e) {
    e.printStackTrace();
} finally {
    System.out.println("一定执行");
}

Lambda

List<String> list = Arrays.asList("a", "b", "c");

// 传统
for (String s : list) {
    System.out.println(s);
}

// Lambda
list.forEach(s -> System.out.println(s));

Stream 流

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

// 过滤 + 遍历
list.stream()
    .filter(x -> x > 3)
    .forEach(System.out::println);

常见工具类

// Arrays
Arrays.sort(arr);

// Math
Math.max(1, 2);

// System
System.currentTimeMillis();

好了,动手写起来吧,当你都写一遍,你就学会基础了。

下一集将会巩固这些教学内容,写一个简单的文字小游戏。

If you enjoyed this, leave a comment~

© 2019 - 2026 VincentHo @VincentHo
Powered by theme astro-koharu · Inspired by Shoka