Java 教程(一文讲透)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

Java 作为一门历史悠久且应用广泛的编程语言,在企业级开发、Android 应用、大数据处理等领域占据重要地位。无论是编程初学者还是希望提升技能的中级开发者,掌握 Java 都能为职业发展提供强大支持。本文将以 Java 教程 为核心,从基础语法到高级特性,结合实际案例和代码示例,帮助读者系统性地理解 Java 的核心概念。


一、Java 的基础语法与核心概念

1.1 程序结构与第一个 Java 程序

Java 程序的基本结构遵循 面向对象 的设计理念。每个 Java 程序由一个或多个类(Class)组成,每个类包含方法(Method)和变量(Variable)。以下是第一个 Java 程序的示例:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, Java 教程!");
    }
}
  • 类与对象HelloWorld 是一个类,可以理解为“蓝图”,而通过 new HelloWorld() 创建的对象则是具体的“房子”。
  • 主方法main 方法是程序的入口,所有 Java 应用必须包含这一方法。

1.2 变量与数据类型

Java 是强类型语言,变量需要声明类型后才能使用。基本数据类型包括:

类型说明占用字节
byte字节型,范围 -128~1271
short短整型,范围 -32768~327672
int整型,范围约 ±20 亿4
long长整型,范围更大8
float单精度浮点数4
double双精度浮点数8
char字符型,用单引号表示2
boolean布尔型,值为 truefalse1

案例:计算圆的面积时,可以声明变量存储半径和结果:

double radius = 5.0;
double area = Math.PI * radius * radius;
System.out.println("面积是:" + area);

1.3 控制结构

1.3.1 条件判断

if-else 语句用于根据条件执行不同逻辑:

int score = 85;
if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 70) {
    System.out.println("良好");
} else {
    System.out.println("需努力");
}

1.3.2 循环

  • for 循环:适合已知循环次数的情况:
    for (int i = 0; i < 5; i++) {
        System.out.println("当前计数:" + i);
    }
    
  • while 循环:条件满足时重复执行:
    int count = 0;
    while (count < 3) {
        System.out.println("循环次数:" + count);
        count++;
    }
    

二、面向对象编程(OOP)

2.1 类与对象

类是对象的模板,而对象是类的实例。例如,设计一个“银行账户”类:

public class BankAccount {
    private double balance; // 私有属性,仅本类可直接访问
    
    public void deposit(double amount) {
        balance += amount;
    }
    
    public void withdraw(double amount) {
        if (balance >= amount) {
            balance -= amount;
        } else {
            System.out.println("余额不足");
        }
    }
    
    public double getBalance() {
        return balance;
    }
}

对象创建与使用

BankAccount account = new BankAccount();
account.deposit(1000);
account.withdraw(500);
System.out.println("当前余额:" + account.getBalance());

2.2 继承与多态

2.2.1 继承

通过 extends 关键字实现继承,子类可以复用父类的代码:

class SavingsAccount extends BankAccount {
    private double interestRate;
    
    public SavingsAccount(double rate) {
        this.interestRate = rate;
    }
    
    public void calculateInterest() {
        double interest = getBalance() * interestRate;
        deposit(interest);
    }
}

2.2.2 多态

多态允许父类引用指向子类对象,并调用覆盖的方法:

BankAccount account = new SavingsAccount(0.05);
account.deposit(1000); // 调用父类方法
((SavingsAccount) account).calculateInterest(); // 显式类型转换后调用子类方法

2.3 抽象类与接口

  • 抽象类:包含抽象方法(无实现)和具体方法,充当半成品模板:
    abstract class Animal {
        abstract void makeSound();
        public void sleep() { System.out.println("睡觉"); }
    }
    
  • 接口:定义方法的“规范”,通过 implements 实现:
    interface Flyable {
        void fly();
    }
    class Bird extends Animal implements Flyable {
        void makeSound() { System.out.println("啾啾"); }
        void fly() { System.out.println("飞翔"); }
    }
    

三、集合框架与泛型

3.1 集合基础

Java 集合框架提供了 ListSetMap 等接口及其实现类。例如:

// List 允许重复元素,有序
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // 输出 "Alice"

// Set 禁止重复元素,无序
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(2); // 会被忽略

// Map 存储键值对
Map<String, Integer> scores = new HashMap<>();
scores.put("Alice", 90);
scores.put("Bob", 85);

3.2 泛型

泛型通过 <类型> 限定集合中存储的元素类型,避免类型转换错误:

List<String> stringList = new ArrayList<>();
stringList.add("Java"); // 正确
// stringList.add(100); // 编译报错

四、异常处理与多线程

4.1 异常处理

Java 通过 try-catch 捕获和处理异常:

try {
    FileReader file = new FileReader("不存在的文件.txt");
} catch (FileNotFoundException e) {
    System.out.println("文件未找到:" + e.getMessage());
} finally {
    System.out.println("无论是否异常,都会执行");
}

4.2 多线程编程

通过 ThreadRunnable 实现多线程:

class MyThread implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println("线程:" + Thread.currentThread().getName() + ",计数:" + i);
        }
    }
}

// 启动线程
Thread thread1 = new Thread(new MyThread(), "线程1");
thread1.start();

五、IO 操作与文件处理

Java 提供了字节流和字符流两种 IO 方式:

// 写入文件(字符流)
FileWriter writer = new FileWriter("output.txt");
writer.write("Java 教程示例\n");
writer.close();

// 读取文件(字节流)
FileInputStream fis = new FileInputStream("input.txt");
int data;
while ((data = fis.read()) != -1) {
    System.out.print((char) data);
}
fis.close();

六、进阶主题与实践建议

6.1 泛型与 Lambda 表达式

Lambda 表达式简化了函数式编程:

List<String> list = Arrays.asList("apple", "banana", "orange");
list.forEach(item -> System.out.println(item.toUpperCase()));

6.2 学习路径建议

  1. 基础阶段:掌握语法、面向对象、集合和异常处理。
  2. 进阶阶段:深入多线程、IO、泛型及设计模式。
  3. 实战阶段:通过 Spring Boot、Android 开发等项目巩固知识。

结论

本文通过 Java 教程 的角度,从基础语法到高级特性,结合代码示例和实际场景,帮助读者构建系统化的 Java 知识体系。无论是编写第一个“Hello World”程序,还是设计复杂的多线程应用,理解核心概念并持续实践是关键。建议读者通过小项目逐步提升技能,同时关注 Java 生态系统的最新发展(如 Java 17+ 的新特性),以保持技术竞争力。

最新发布