Java大学简明教程
前言:为什么学习Java?
Java是一门非常流行且强大的编程语言,具有以下特点:

- 跨平台性:一次编写,到处运行(Write Once, Run Anywhere),Java代码被编译成字节码,在任何安装了Java虚拟机的平台上都能运行。
- 面向对象:Java是一门纯粹的面向对象语言,有助于你构建结构清晰、可维护、可扩展的大型软件系统。
- 健壮性:拥有强大的异常处理机制和自动内存管理(垃圾回收),减少了程序出错的可能性。
- 丰富的生态系统:拥有海量的开源库(如Spring, MyBatis)、强大的开发工具(如IntelliJ IDEA)和庞大的开发者社区,让你能快速解决各种问题。
- 应用广泛:从后端服务器(如阿里巴巴、京东)、大数据平台(如Hadoop, Spark)、安卓App到科学计算,Java无处不在。
第一部分:Java基础入门
第1章:Java环境搭建与第一个程序
1 安装JDK (Java Development Kit) JDK是Java开发工具包,包含了编译器、运行时环境等。
- 下载:访问Oracle官网或OpenJDK官网,下载适合你操作系统的最新LTS(长期支持)版本。
- 安装:双击安装包,按照提示完成安装。记住安装路径,
C:\Program Files\Java\jdk-17。 - 配置环境变量:
- 新建系统变量
JAVA_HOME,值为你的JDK安装路径(如C:\Program Files\Java\jdk-17)。 - 编辑系统变量
Path,新建一项%JAVA_HOME%\bin。
- 新建系统变量
2 验证安装 打开命令行(Windows的CMD或PowerShell,macOS/Linux的Terminal),输入以下命令:
java -version javac -version
如果都显示了对应的版本号,说明安装成功。
3 编写第一个Java程序 "Hello, World!"

- 创建文件:在任意位置新建一个文件夹,如
D:\JavaProjects,在该文件夹下创建一个名为HelloWorld.java的文件。 - 编写代码:
// HelloWorld.java public class HelloWorld { // 定义一个名为 HelloWorld 的公共类 public static void main(String[] args) { // 定义程序的入口方法 main System.out.println("Hello, World!"); // 在控制台打印输出 } } - 编译:在命令行中,进入到
D:\JavaProjects目录,执行:javac HelloWorld.java
执行后,会生成一个
HelloWorld.class文件,这是Java的字节码文件。 - 运行:在同一个命令行窗口中,执行:
java HelloWorld
你将看到控制台输出:
Hello, World!注意:运行时使用
java命令,后面跟的是类名,而不是文件名。
第二部分:Java核心语法
第2章:变量、数据类型与运算符
1 关键字与标识符

- 关键字:Java中具有特殊含义的单词,如
public,class,void,int等,不能用作变量名。 - 标识符:给类、方法、变量等起的名字,规则:由字母、数字、下划线
_或美元符组成,不能以数字开头,且不能是关键字。
2 数据类型 Java是强类型语言,每个变量都必须声明类型。
- 基本数据类型:
- 整数:
byte,short,int,long。long类型数值后需加L或l,如100L。 - 浮点数:
float,double。float类型数值后需加F或f,如14F。double是默认的小数类型。 - 字符:
char,表示单个字符,用单引号括起,如'A', '好'。 - 布尔:
boolean,只有两个值:true和false。
- 整数:
- 引用数据类型:
- 类:如
String(字符串),Scanner(扫描器)等。 - 接口:如
Runnable。 - 数组:如
int[]。
- 类:如
3 变量与常量
- 变量:在程序运行过程中可以改变的量,声明格式:
数据类型 变量名 = 初始值;int age = 18; String name = "张三";
- 常量:在程序运行过程中不能改变的量,使用
final关键字修饰。final double PI = 3.14159;
4 运算符
- 算术运算符:, , , , (取余), , 。
- 关系运算符:, ,
>,<,>=,<=,返回boolean值。 - 逻辑运算符:
&&(与), (或), (非),也返回boolean值。 - 赋值运算符:, , , , 。
第3章:流程控制
1 条件语句
- if-else:
int score = 85; if (score >= 90) { System.out.println("优秀"); } else if (score >= 60) { System.out.println("及格"); } else { System.out.println("不及格"); } - switch:适用于多分支条件判断,
case后的值必须是常量。int day = 3; switch (day) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; default: System.out.println("其他天"); break; }
2 循环语句
- for循环:适用于循环次数已知的情况。
// 从1打印到5 for (int i = 1; i <= 5; i++) { System.out.println(i); } - while循环:适用于循环次数未知,但循环条件明确的情况。
int count = 0; while (count < 5) { System.out.println(count); count++; } - do-while循环:至少执行一次循环体,然后再判断条件。
int num = 0; do { System.out.println(num); num++; } while (num < 5);
3 跳转语句
break:跳出当前循环或switch语句。continue:跳过本次循环,直接进入下一次循环。
第4章:数组
数组是存储固定大小、相同类型元素的容器。
-
声明与初始化:
// 方式1:声明并分配空间 int[] scores = new int[5]; // 创建一个能存放5个int的数组 // 方式2:声明并初始化 String[] names = {"张三", "李四", "王五"}; -
访问元素:通过索引(从0开始)访问。
scores[0] = 90; // 给第一个元素赋值 System.out.println(names[1]); // 输出第二个元素 "李四"
-
数组长度:使用
数组名.length属性获取。System.out.println(names.length); // 输出 3
第三部分:面向对象编程
这是Java的精髓,是构建复杂应用的基础。
第5章:类与对象
1 核心概念
- 类:是创建对象的模板或蓝图,它定义了一类对象共有的属性(成员变量)和行为(方法)。
- 对象:是类的实例,是一个具体的实体,拥有自己的状态(属性值)和行为。
2 定义一个类
以 Student 类为例:
// Student.java
public class Student {
// 1. 成员变量(属性)
String name;
int age;
String gender;
// 2. 构造方法
// 构造方法用于创建对象时初始化属性
public Student(String name, int age, String gender) {
this.name = name; // this. 表示当前对象的属性
this.age = age;
this.gender = gender;
}
// 3. 成员方法(行为)
public void study() {
System.out.println(name + "正在学习Java...");
}
public void introduce() {
System.out.println("大家好,我叫" + name + ",今年" + age + "岁。");
}
}
3 创建与使用对象
// TestStudent.java
public class TestStudent {
public static void main(String[] args) {
// 使用new关键字和构造方法创建对象
Student s1 = new Student("张三", 20, "男");
Student s2 = new Student("李四", 21, "女");
// 访问对象的属性和行为
s1.introduce();
s1.study();
s2.introduce();
}
}
第6章:面向对象三大特性
1 封装
-
概念:将对象的属性(数据)和行为(方法)包装在一个独立的单元(类)中,并尽可能隐藏对象的内部细节,只对外暴露有限的接口。
-
实现:使用
private关键字将成员变量设为私有,然后提供public的getter和setter方法来访问和修改它们。// 在Student类中 private String name; // 私有化 // 提供公共的getter和setter方法 public String getName() { return this.name; } public void setName(String name) { this.name = name; }
2 继承
-
概念:一个类(子类/派生类)可以继承另一个类(父类/超类)的属性和方法,实现代码的复用。
-
关键字:
extends。 -
特点:
- Java只支持单继承,但支持多重继承(通过接口)。
- 子类拥有父类的非
private的成员。 - 子类可以扩展自己的新功能。
// 定义一个父类 Person public class Person { protected String name; // protected 子类可以访问 public void eat() { System.out.println(name + "在吃饭"); } }
// Student类 继承 Person类 public class Student extends Person { private int score; public void study() { System.out.println(name + "在学习"); } }
3 多态
-
概念:指同一个接口,使用不同的实例而执行不同操作,通俗地说,一种事物,多种形态”。
-
实现条件:
- 继承或实现关系。
- 方法重写。
- 父类引用指向子类对象。
-
示例:
// Animal.java (父类) public class Animal { public void makeSound() { System.out.println("动物在叫"); } } // Dog.java (子类) public class Dog extends Animal { @Override // 注解,表示重写父类方法 public void makeSound() { System.out.println("汪汪汪!"); } } // Cat.java (子类) public class Cat extends Animal { @Override public void makeSound() { System.out.println("喵喵喵!"); } } // TestPolymorphism.java public class TestPolymorphism { public static void main(String[] args) { // 父类引用指向子类对象 Animal myDog = new Dog(); Animal myCat = new Cat(); myDog.makeSound(); // 输出: 汪汪汪! myCat.makeSound(); // 输出: 喵喵喵! } }
第四部分:常用API与进阶
第7章:常用API
API(Application Programming Interface)是Java类库中预定义好的类和方法,可以直接调用。
String类:不可变的字符序列。String s = "Hello"; s.length(); // 获取长度 s.substring(1, 3); // 获取子串 "el" s.equals("hello"); // 比较内容Math类:提供数学运算方法。Math.max(10, 20); // 返回较大值 20 Math.random(); // 返回一个 [0.0, 1.0) 之间的随机数
Scanner类:用于获取用户输入。Scanner scanner = new Scanner(System.in); System.out.print("请输入你的名字: "); String name = scanner.nextLine(); System.out.println("你好, " + name); scanner.close(); // 关闭Scanner
第8章:异常处理
1 什么是异常? 异常是程序在运行时出现的错误,如除零错误、数组越界、文件找不到等,如果不处理,程序会终止。
2 异常处理机制
使用 try-catch-finally 语句块来捕获和处理异常。
try:放置可能抛出异常的代码。catch:捕获并处理特定类型的异常。finally:无论是否发生异常,finally块中的代码都会被执行(通常用于资源释放)。public class ExceptionTest { public static void main(String[] args) { try { int[] arr = {1, 2, 3}; System.out.println(arr[3]); // 数组越界,会抛出 ArrayIndexOutOfBoundsException } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组索引越界了!"); e.printStackTrace(); // 打印异常的详细堆栈信息 } finally { System.out.println("程序执行完毕。"); } } }
第五部分:实战与总结
第9章:项目实战:简易学生管理系统
这是一个非常经典的入门级项目,可以综合运用你学到的所有知识。
项目目标:
- 能够录入学生信息(姓名、年龄、成绩)。
- 能够查看所有学生信息。
- 能够根据学号删除学生。
- 能够根据学号修改学生信息。
实现思路:
- 创建一个
Student类,包含id,name,age,score等属性,以及相应的构造方法和getter/setter。 - 创建一个
StudentManager类,作为管理器,包含一个Student类型的数组(或ArrayList)来存储所有学生。 - 在
StudentManager中实现以下方法:addStudent(Student s): 添加学生。showAllStudents(): 遍历并打印所有学生信息。deleteStudentById(int id): 根据ID查找并删除学生。updateStudentById(int id, Student newStudent): 根据ID查找并更新学生信息。
- 创建一个
Main类,提供一个主菜单(使用Scanner获取用户输入),通过循环来调用StudentManager的方法,实现交互。
第10章:学习路径与资源推荐
进阶方向:
- 集合框架:
ArrayList,HashMap等,比数组更灵活。 - I/O流:处理文件读写。
- 多线程:让程序同时处理多个任务。
- 网络编程:开发客户端/服务器应用。
- 数据库连接:使用JDBC操作MySQL等数据库。
- Web开发:学习Spring Boot框架,快速开发企业级应用。
推荐资源:
- 书籍:
- 《Java核心技术 卷I》:基础知识非常扎实。
- 《Head First Java》:图文并茂,适合入门。
- 在线教程:
- 菜鸟教程:快速查询语法。
- B站/慕课网:大量免费视频课程。
- Oracle官方文档:最权威的资料。
- 开发工具:
- IntelliJ IDEA:目前最强大、最好用的Java IDE,社区版免费。
学习Java是一个循序渐进的过程,本教程为你勾勒出了一个清晰的路线图,请务必多动手敲代码,遇到问题多思考、多搜索,祝你学习顺利,早日成为Java高手!
