第一部分:Java基础知识(完整版)
1. Java是什么?
Java是一种面向对象的编程语言,特点是"一次编写,到处运行"(通过Java虚拟机JVM实现跨平台)。
2. 基础语法
2.1 变量与数据类型
数据类型分类:
-
基本类型 :
byte、short、int、long(整数)、float、double(小数)、char(字符)、boolean(true/false) -
引用类型:类、接口、数组、枚举
java
int age = 25; // 整数
double price = 99.9; // 小数
char grade = 'A'; // 单引号
String name = "张三"; // 字符串(引用类型)
boolean isPass = true; // 布尔值
2.2 运算符
-
算术:
+ - * / % -
比较:
== != > < >= <= -
逻辑:
&&(与) ||(或) !(非) -
赋值:
= += -= *= /=
java
int a = 10, b = 3;
int sum = a + b; // 13
boolean result = (a > b) && (b > 0); // true
2.3 控制流程
条件判断:
java
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("其他");
}
循环:
java
// for循环:已知次数
for (int i = 0; i < 5; i++) {
System.out.println("第" + i + "次");
}
// while循环:条件未知
int n = 0;
while (n < 3) {
System.out.println(n);
n++;
}
// do-while:至少执行一次
int m = 0;
do {
System.out.println(m);
m++;
} while (m < 0); // 输出0,然后结束
2.4 数组
固定长度,存储同一类型数据。
java
int[] numbers = {1, 2, 3, 4}; // 静态初始化
String[] names = new String[3]; // 动态初始化(长度3)
names[0] = "张三";
System.out.println(numbers[0]); // 输出1
System.out.println(numbers.length); // 数组长度4
3. 面向对象(OOP)核心
3.1 类与对象
类 是模板,对象是根据模板创建的具体实例。
java
// 定义一个类
public class Student {
// 属性(成员变量)
String name;
int age;
// 方法
public void study() {
System.out.println(name + "正在学习");
}
}
// 创建对象并使用
Student stu = new Student();
stu.name = "李华";
stu.age = 18;
stu.study(); // 输出:李华正在学习
3.2 构造方法
创建对象时自动调用,用于初始化。
java
public class Student {
String name;
// 构造方法(无返回值,类名相同)
public Student(String n) {
name = n;
}
}
Student stu = new Student("小明"); // 自动调用构造方法
3.3 三大特性:封装、继承、多态
封装:隐藏内部细节,通过getter/setter访问。
java
public class Person {
private int age; // 私有
public int getAge() { // 公共获取
return age;
}
public void setAge(int a) {
if (a > 0) age = a; // 可加入校验逻辑
}
}
继承:子类复用父类的属性和方法。
java
class Animal {
public void eat() { System.out.println("吃东西"); }
}
class Dog extends Animal {
public void bark() { System.out.println("汪汪"); }
}
Dog dog = new Dog();
dog.eat(); // 继承来的
dog.bark(); // 自己的
多态:同一方法在不同对象上有不同表现。
java
Animal a = new Dog(); // 父类引用指向子类对象
a.eat(); // 调用Dog重写后的eat(如果重写了)
3.4 重载与重写
-
重载:同一类中,方法名相同,参数列表不同。
-
重写:子类重新定义父类的方法。
java
// 重载
public void print(int a) {}
public void print(String s) {}
// 重写(子类中)
@Override
public void eat() {
System.out.println("狗吃肉");
}
4. 常用API
4.1 字符串(String)
java
String s = "Hello";
int len = s.length(); // 5
String upper = s.toUpperCase(); // "HELLO"
String sub = s.substring(1, 3); // "el"(从索引1到2)
boolean eq = s.equals("hello"); // false(区分大小写)
4.2 集合框架(重点)
| 接口 | 实现类 | 特点 |
|---|---|---|
| List | ArrayList | 有序、可重复、有索引 |
| Set | HashSet | 无序、不可重复 |
| Map | HashMap | 键值对,键唯一 |
java
// List
List<String> list = new ArrayList<>();
list.add("苹果");
list.add("香蕉");
System.out.println(list.get(0)); // 苹果
// Set
Set<Integer> set = new HashSet<>();
set.add(10);
set.add(10); // 重复不会添加
// Map
Map<String, Integer> map = new HashMap<>();
map.put("语文", 90);
map.put("数学", 85);
int mathScore = map.get("数学"); // 85
4.3 异常处理
java
try {
int[] arr = {1,2};
System.out.println(arr[5]); // 会抛出异常
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("索引越界了");
} finally {
System.out.println("无论是否异常,都执行");
}
5. 输入输出(IO)
java
// 读取文件内容
try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
6. 多线程
java
// 方式1:继承Thread
class MyThread extends Thread {
public void run() {
System.out.println("线程运行中");
}
}
new MyThread().start();
// 方式2:实现Runnable(推荐)
Runnable task = () -> {
System.out.println("另一个线程");
};
new Thread(task).start();
第二部分:SQL基础知识(完整版)
1. SQL是什么?
结构化查询语言,用于操作关系型数据库(如MySQL、Oracle、SQL Server)。
2. SQL分类
| 分类 | 作用 | 关键字 |
|---|---|---|
| DDL(数据定义) | 定义表结构 | CREATE, ALTER, DROP |
| DML(数据操作) | 增删改数据 | INSERT, UPDATE, DELETE |
| DQL(数据查询) | 查询数据 | SELECT |
| DCL(数据控制) | 权限管理 | GRANT, REVOKE |
3. DDL:操作表
sql
-- 创建表
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增
name VARCHAR(50) NOT NULL,
age INT,
score DECIMAL(5,2) -- 总共5位,小数2位
);
-- 修改表(添加列)
ALTER TABLE student ADD email VARCHAR(100);
-- 删除表
DROP TABLE student;
4. DML:增删改数据
sql
-- 插入数据
INSERT INTO student (name, age, score) VALUES ('张三', 20, 85.5);
-- 更新数据
UPDATE student SET score = 90 WHERE name = '张三';
-- 删除数据
DELETE FROM student WHERE age < 18;
5. DQL:查询数据(重中之重)
5.1 基础查询
sql
-- 查询所有列
SELECT * FROM student;
-- 查询指定列
SELECT name, score FROM student;
-- 去重
SELECT DISTINCT age FROM student;
-- 别名
SELECT name AS 姓名, score 成绩 FROM student;
5.2 条件过滤(WHERE)
sql
SELECT * FROM student
WHERE age > 18 AND score >= 60; -- AND / OR / NOT
-- 模糊查询(%任意字符,_单个字符)
SELECT * FROM student WHERE name LIKE '张%';
-- 范围查询
SELECT * FROM student WHERE age BETWEEN 18 AND 22;
SELECT * FROM student WHERE id IN (1,3,5);
-- 空值判断
SELECT * FROM student WHERE email IS NULL;
5.3 排序(ORDER BY)
sql
SELECT * FROM student ORDER BY score DESC; -- 降序
SELECT * FROM student ORDER BY age ASC, score DESC; -- 先按年龄升,再按成绩降
5.4 分组与聚合函数
常用聚合函数: COUNT、SUM、AVG、MAX、MIN
sql
-- 每个年龄的人数
SELECT age, COUNT(*) AS 人数
FROM student
GROUP BY age;
-- 分组后过滤(HAVING)
SELECT age, AVG(score) AS 平均分
FROM student
GROUP BY age
HAVING AVG(score) > 80;
区别:WHERE在分组前过滤,HAVING在分组后过滤。
5.5 分页查询(LIMIT)
sql
-- MySQL语法:跳过前2条,取3条
SELECT * FROM student LIMIT 2, 3;
-- 或者:从第0条开始取5条
SELECT * FROM student LIMIT 5;
6. 多表查询(连接)
假设有两张表:
-
student:id, name, class_id -
class:id, class_name
6.1 内连接(INNER JOIN)
只返回两表匹配的行。
sql
SELECT s.name, c.class_name
FROM student s
INNER JOIN class c ON s.class_id = c.id;
6.2 左外连接(LEFT JOIN)
返回左表所有行,右表没匹配则显示NULL。
sql
SELECT s.name, c.class_name
FROM student s
LEFT JOIN class c ON s.class_id = c.id;
6.3 子查询
sql
-- 查询成绩高于平均分的学生
SELECT * FROM student
WHERE score > (SELECT AVG(score) FROM student);
7. 事务(Transaction)
一组SQL要么全部成功,要么全部失败。
sql
START TRANSACTION; -- 开启事务
UPDATE account SET money = money - 100 WHERE name = '张三';
UPDATE account SET money = money + 100 WHERE name = '李四';
COMMIT; -- 提交(或 ROLLBACK 回滚)
8. 索引(提高查询速度)
sql
-- 创建索引
CREATE INDEX idx_name ON student(name);
-- 删除索引
DROP INDEX idx_name ON student;
9. 常用函数举例
sql
-- 字符串
SELECT CONCAT(name, '的分数是', score) FROM student;
SELECT LENGTH('Hello'); -- 5
-- 日期
SELECT NOW(); -- 当前日期时间
SELECT DATEDIFF('2025-01-01', '2024-01-01'); -- 天数差
-- 数学
SELECT ROUND(3.14159, 2); -- 3.14
SELECT ABS(-5); -- 5
总结一句话
-
Java基础:掌握变量、流程控制、面向对象(类/对象/继承/多态)、集合(List/Set/Map)、异常、IO、多线程。
-
SQL基础:掌握增删改查(尤其SELECT的WHERE/GROUP/ORDER/JOIN),以及事务和索引的基本概念。