杰瑞科技汇

Java基础教程该怎么学?

Java 基础教程:从入门到实践

本教程将带你走过 Java 编程的每一个关键步骤,从环境搭建到面向对象编程,再到常用 API 和实战项目。

Java基础教程该怎么学?-图1
(图片来源网络,侵删)

第一部分:Java 简介与环境搭建

什么是 Java?

Java 是一种高级的、面向对象的、跨平台的编程语言,由 Sun 公司(现已被 Oracle 收购)于 1995 年推出。

  • “一次编写,到处运行”(Write Once, Run Anywhere):这是 Java 最著名的特性,通过 Java 虚拟机,Java 代码可以在任何安装了 JVM 的操作系统上运行,而无需重新编译。
  • 面向对象:Java 的核心思想是“万物皆对象”,这使得代码结构更清晰、更易于维护和扩展。
  • 健壮性:拥有强大的异常处理机制和自动内存管理(垃圾回收 Garbage Collection, GC),减少了程序崩溃的风险。
  • 安全性:Java 语言的设计本身就考虑了安全性,例如取消了指针操作,防止了非法内存访问。

Java 体系:JDK, JRE, JVM

理解这三者的关系至关重要:

  • JVM (Java Virtual Machine - Java 虚拟机):是运行 Java 字节码的虚拟机,它是 Java 实现跨平台的核心,不同平台(Windows, Linux, macOS)有不同的 JVM,但它们都执行相同的 Java 字节码。
  • JRE (Java Runtime Environment - Java 运行时环境):包含了运行 Java 程序所必需的环境,包括 JVM 和 Java 核心类库(.jar 文件),如果你只是想运行一个已经写好的 Java 程序,只需要安装 JRE 即可。
  • JDK (Java Development Kit - Java 开发工具包):是用于开发 Java 程序的完整工具包,它包含了 JRE,同时还包含了编译器(javac)、调试器(jdb)、文档生成工具(javadoc)等开发工具。如果你要写 Java 代码,就必须安装 JDK。

关系图: JDK 包含 JREJRE 包含 JVMJDK (开发工具) -> JRE (运行环境) -> JVM (执行引擎)

环境搭建

  1. 下载 JDK

    Java基础教程该怎么学?-图2
    (图片来源网络,侵删)
  2. 配置环境变量

    • 目的:让命令行知道 javac(编译器)和 java(运行时)命令在哪里。
    • 步骤: a. 右键“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。 b. 在“系统变量”中,新建一个变量 JAVA_HOME,值为你的 JDK 安装路径(C:\Program Files\Java\jdk-17)。 c. 找到系统变量 Path,点击“编辑”,新建”,添加 %JAVA_HOME%\bin。 d. 保存所有弹出的窗口。
  3. 验证安装

    • 打开一个新的命令行窗口(CMD 或 PowerShell)。
    • 输入 java -version,如果显示版本号,说明配置成功。
    • 输入 javac -version,如果也显示版本号,说明编译器路径也正确。

第二部分:Java 基础语法

第一个 Java 程序:Hello, World!

创建一个名为 HelloWorld.java 的文件:

// HelloWorld.java
// 1. 定义一个公开的类,类名必须和文件名一致
public class HelloWorld {
    // 2. 这是程序的主入口,JVM 会从这里开始执行代码
    public static void main(String[] args) {
        // 3. System.out.println() 是一个打印语句,会在控制台输出内容并换行
        System.out.println("Hello, World!");
    }
}

编译与运行

Java基础教程该怎么学?-图3
(图片来源网络,侵删)
  1. 打开命令行,进入 HelloWorld.java 所在的目录。
  2. 编译javac HelloWorld.java
    • 如果没有报错,会生成一个 HelloWorld.class 文件,这是 Java 字节码。
  3. 运行java HelloWorld
    • 注意:这里不需要加 .class 后缀,因为 java 命令启动 JVM,JVM 会去加载指定的类。

关键语法元素

  • 注释

    • 单行注释:// 注释内容
    • 多行注释:/* 注释内容 */
    • 文档注释:/** 注释内容 */ (可用于生成 API 文档)
  • 标识符与关键字

    • 标识符:给类、变量、方法等起的名字,规则:字母、数字、下划线、美元符组成,不能以数字开头,不能是关键字。
    • 关键字:Java 保留的、有特殊含义的单词,如 public, class, void, int 等。
  • 数据类型: Java 是强类型语言,变量必须先声明类型后使用。

    • 基本数据类型: | 类型 | 大小 (字节) | 默认值 | 描述 | | :--- | :--- | :--- | :--- | | byte | 1 | 0 | 8位整数 | | short | 2 | 0 | 16位整数 | | int | 4 | 0 | 32位整数 (最常用) | | long | 8 | 0L | 64位整数 (后加L) | | float | 4 | 0.0f | 32位浮点数 (后加f) | | double | 8 | 0.0d | 64位浮点数 (最常用) | | char | 2 | '\u0000' | 16位 Unicode 字符 | | boolean | 1 | false | truefalse |

    • 引用数据类型

      • :如 String, Scanner
      • 接口:如 List, Runnable
      • 数组:如 int[], String[]
  • 变量与常量

    • 变量:存储数据的容器,值可以改变。
      int age = 18; // 声明并初始化
      String name = "张三";
      age = 19; // 修改值
    • 常量:值不能改变的变量,使用 final 关键字。
      final double PI = 3.14159;
      // PI = 3.14; // 这行代码会报错
  • 运算符

    • 算术运算符:, , , , (取余), ,
    • 赋值运算符:, , , ...
    • 比较运算符:, , >, <, >=, <= (返回 boolean 值)
    • 逻辑运算符:&& (与), (或), (非) (用于连接 boolean 表达式)
    • 位运算符:&, , ^, , <<, >>, >>>

流程控制

  • if-else 条件语句

    int score = 85;
    if (score >= 90) {
        System.out.println("优秀");
    } else if (score >= 60) {
        System.out.println("及格");
    } else {
        System.out.println("不及格");
    }
  • switch 选择语句

    char grade = 'B';
    switch (grade) {
        case 'A':
            System.out.println("优秀");
            break; // 一定要有 break,否则会穿透执行
        case 'B':
            System.out.println("良好");
            break;
        case 'C':
            System.out.println("及格");
            break;
        default:
            System.out.println("未知等级");
    }
  • for 循环

    // 打印 1 到 10
    for (int i = 1; i <= 10; i++) {
        System.out.println(i);
    }
  • while 循环

    int count = 0;
    while (count < 5) {
        System.out.println("Count: " + count);
        count++;
    }
  • do-while 循环:至少执行一次。

    int num = 1;
    do {
        System.out.println(num);
        num++;
    } while (num <= 5);

第三部分:核心概念:面向对象编程

这是 Java 的灵魂,万物皆对象。

类与对象

  • :是创建对象的模板或蓝图,它定义了一组属性(变量)和方法(行为)。

    // 定义一个“学生”类
    public class Student {
        // 属性 (成员变量)
        String name;
        int age;
        // 方法 (成员方法)
        public void study() {
            System.out.println(name + "正在学习...");
        }
    }
  • 对象:是类的具体实例,根据类这个蓝图,我们可以创建出多个具体的对象。

    public class Main {
        public static void main(String[] args) {
            // 创建一个 Student 对象
            Student student1 = new Student();
            student1.name = "李四";
            student1.age = 20;
            student1.study(); // 输出: 李四正在学习...
            // 创建另一个 Student 对象
            Student student2 = new Student();
            student2.name = "王五";
            student2.age = 21;
            student2.study(); // 输出: 王五正在学习...
        }
    }

三大特性

  • 封装

    • 目的:隐藏对象的内部状态,只暴露必要的操作接口,保护数据不被外部随意修改。

    • 实现:使用 private 关键字将属性设为私有,然后提供 publicgetter (获取) 和 setter (设置) 方法来访问和修改这些属性。

      public class Student {
      private String name; // 私有属性,外部无法直接访问
      // 公开的 getter 方法
      public String getName() {
          return name;
      }
      // 公开的 setter 方法
      public void setName(String newName) {
          this.name = newName;
      }
      }
  • 继承

    • 目的:代码复用,子类可以继承父类的属性和方法,并可以扩展自己的新功能。
    • 关键字extends
    • 特点:Java 只支持单继承,但可以通过接口实现多重继承的效果。
      // 父类
      public class Animal {
      public void eat() {
          System.out.println("动物吃东西");
      }
      }

    // 子类 Dog 继承自 Animal public class Dog extends Animal { // Dog 自动拥有 eat() 方法 public void bark() { System.out.println("汪汪叫"); } }

  • 多态

    • 目的:提高代码的灵活性和可扩展性,允许不同类的对象对同一消息做出响应。
    • 实现条件:继承、方法重写、父类引用指向子类对象。
      // 父类
      class Animal {
      public void makeSound() {
          System.out.println("动物发出声音");
      }
      }

    // 子类 class Cat extends Animal { @Override // 注解,表示重写父类方法 public void makeSound() { System.out.println("喵喵叫"); } }

    class Dog extends Animal { @Override public void makeSound() { System.out.println("汪汪叫"); } }

    // 测试多态 public class Test { public static void main(String[] args) { // 父类引用指向子类对象 Animal myCat = new Cat(); Animal myDog = new Dog();

        myCat.makeSound(); // 输出: 喵喵叫
        myDog.makeSound(); // 输出: 汪汪叫
    }

其他重要 OOP 概念

  • 抽象:通过抽象类和接口来实现,它隐藏了复杂的实现细节,只向用户展示必要的功能。
    • 抽象类:使用 abstract 关键字修饰,不能被实例化,可以包含抽象方法(没有方法体)和具体方法。
    • 接口:是行为的规范,使用 interface 关键字,接口中的方法默认是 public abstract 的,变量默认是 public static final 的,一个类可以实现多个接口。

第四部分:常用核心 API

Java 提供了强大的标准库,我们每天都在使用它们。

字符串处理

  • String:不可变的字符序列,一旦创建,内容就不能改变。

    String s1 = "Hello";
    String s2 = s1 + " World"; // s1 不会变,会创建一个新的字符串对象
  • StringBuilder / StringBuffer:可变的字符序列,适用于频繁修改字符串的场景(如循环拼接)。

    • StringBuilder:非线程安全,性能更高。
    • StringBuffer:线程安全,性能稍低。
      StringBuilder sb = new StringBuilder();
      sb.append("Hello");
      sb.append(" ");
      sb.append("World");
      String result = sb.toString(); // 结果为 "Hello World"

集合框架

用于存储、检索和操作一组对象。

  • List (列表):有序、可重复。

    • ArrayList:基于数组实现,查询快,增删慢,最常用。
    • LinkedList:基于链表实现,增删快,查询慢。
      import java.util.ArrayList;
      import java.util.List;

    List names = new ArrayList<>(); names.add("张三"); names.add("李四"); System.out.println(names.get(0)); // 输出: 张三

  • Set (集):无序、不可重复。

    • HashSet:基于哈希表实现,存取速度快。
    • TreeSet:基于红黑树实现,可以自动排序。
      import java.util.HashSet;
      import java.util.Set;

    Set uniqueNames = new HashSet<>(); uniqueNames.add("张三"); uniqueNames.add("张三"); // 重复添加,无效 System.out.println(uniqueNames.size()); // 输出: 1

  • Map (映射):存储键值对,键是唯一的。

    • HashMap:基于哈希表实现,存取速度快,最常用。
    • TreeMap:基于红黑树实现,可以根据键排序。
      import java.util.HashMap;
      import java.util.Map;

    Map<String, Integer> studentAges = new HashMap<>(); studentAges.put("张三", 20); studentAges.put("李四", 21); System.out.println(studentAges.get("张三")); // 输出: 20

异常处理

程序运行时出现的错误,Java 通过 try-catch-finally 机制来处理异常,使程序更健壮。

public class ExceptionTest {
    public static void main(String[] args) {
        try {
            // 可能会发生异常的代码块
            int[] arr = new int[3];
            System.out.println(arr[5]); // 这里会抛出 ArrayIndexOutOfBoundsException
        } catch (ArrayIndexOutOfBoundsException e) {
            // 捕获并处理特定类型的异常
            System.out.println("数组越界了!请检查数组索引。");
            e.printStackTrace(); // 打印异常的详细堆栈信息
        } finally {
            // 无论是否发生异常,finally 块中的代码都会执行
            System.out.println("程序执行完毕。");
        }
    }
}

第五部分:进阶与实战

输入输出

  • 使用 Scanner 类从控制台读取用户输入。

    import java.util.Scanner;
    public class InputTest {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入你的名字: ");
            String name = scanner.nextLine(); // 读取一行
            System.out.print("请输入你的年龄: ");
            int age = scanner.nextInt(); // 读取一个整数
            System.out.println("你好, " + name + ",你今年 " + age + " 岁。");
            scanner.close(); // 关闭 Scanner,释放资源
        }
    }

文件操作

  • 使用 FileReaderFileWriter 读写文本文件(旧方式,简单易用)。
  • 使用 BufferedReaderBufferedWriter 进行缓冲读写(推荐,性能更好)。
  • 使用 FilesPaths 类(NIO.2,更现代、更强大的文件操作 API)。

实战项目建议

学完基础后,通过项目来巩固是最好的方式。

  1. 控制台版学生信息管理系统

    • 功能:添加学生、删除学生、修改学生信息、查询所有学生、按学号查询。
    • 练习:类的设计、集合的使用、循环、条件判断、简单的文件持久化(保存到文件)。
  2. 简单的计算器

    • 功能:支持加减乘除。
    • 练习:输入处理、运算符逻辑、异常处理(如除零错误)。
  3. 猜数字游戏

    • 功能:随机生成一个数字,用户来猜,并提示“大了”或“小了”。
    • 练习:随机数生成、循环、条件判断。

学习资源推荐

  • 官方文档Oracle Java Documentation (最权威,但可能对新手不友好)
  • 在线教程
  • 书籍
    • 《Java核心技术 卷 I》(原版《Core Java》):经典入门书籍。
    • 《Effective Java》:进阶必读,教你如何写出高质量的 Java 代码。
  • 视频课程

    B站、慕课网等平台有大量免费的 Java 入门和进阶视频课程。

  • IDE (集成开发环境)
    • IntelliJ IDEA:强烈推荐,功能强大,智能提示好,社区版免费。
    • Eclipse:老牌 IDE,免费开源。

学习 Java 是一个循序渐进的过程,本教程涵盖了从环境搭建到核心 OOP 概念再到常用 API 的所有基础知识。最重要的是多动手写代码,多思考,并尝试完成一些小项目来巩固所学。 祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇