# 工具
Object上帝类,其他类直接间接的继承了
String 可以看做字符数值 :replace()替换字符,subString()从下标开始到最后,可以给定头尾,包头不包尾
Java.util 工具类,Data时间,math数学
包装类基本数据类型
String和StringBuffer的区别
String每次进行更改都会产生一个新的对象。
StringBuffer不会产生新的对象而是在原有的对象进行更改,线程安全但会发生阻塞现象
装箱拆箱
在1.5之前不可以自动装箱,之后可以。
装箱把基本数据类型封住成包装类
拆箱把包装的基本数据类型取出
**包名加类名叫完全限定名**
# 集合
ArrayList中的数据有序可重复,自动扩容
hashList 不可重复,无序,不能拿,拿要用 .iterator()迭代器,
hasNext()如果还有存在下一个没有被访问的数据就会返回true
增强性for循环
for(数据类型 变量名 : 被遍历的集合)
hashMap也是无序的,由key 和 value组成的键值对组成。
key是无序的,唯一的所以ksyset可以拿出所有的key来,变成一个set集合
value是无序的,是不唯一的,所以values 方法是collection集合
# I/O流
```java
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class i_o_Main {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("D://html//icomoon.zip");
fos = new FileOutputStream("E://newJava//icomoon.zip");
byte[] bytes = new byte[1024];
int len = fis.read(bytes);
while (len != -1) {
fos.write(bytes, 0, len);
len = fis.read(bytes);
}
fos.flush();
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if (fis != null)
fis.close();
if (fos!= null)
fos.close();
}catch (IOException e) {
}
}
}
}
```
所有开辟的通道都需要关闭,不关就是死
# 数据库
DML(Data Manipulation Language)语言引导词:数据操作语言,用来定义数据库记录
INSERT(增) DELETE(删) UPDATE(改)
DQL (Data Query Language )语言引导词:数据查询语音,用来查询记录
SELECT(查)
DCL(Data ControI Language)语言引导词:数据控制语言,用来定义访问权限和安全级别
GRANT(授权) REVOKE(调用)
DDL (Data Definition Language) 语言引导词:数据定义语言,用来定义数据库对象(库,表,列)
CREATE(创建) ALTER(修改)DROP(撤销)
增:
insert into 表名 values (表值1,表值2.....)
MySQL 中可以一次增加多行
insert into 表名 values (表值1,表值2.....),(表值1,表值2.....),(表值1,表值2.....).......
删:
delete from 表名 where 条件
改:
update 表名 set 列值=新值,.....,where条件
查:
查全部
select * from 表名
根据条件查询
SELECT *FROM 表名 WHERE 条件
查询手机号从13000000001到13000000003
SELECT * FROM 表名 WHERE phone BETWEEN '13000000001' and '13000000003'
order by 排序 默认asc,desc是倒序
SELECT * FROM 表名 ORDER BY age desc
like模糊查询
SELECT * FROM 表名 WHERE usname LIKE '曹%'
limit (0,5)用于分页从0开始走5个长度
SELECT * FROM 表名 WHERE phone BETWEEN '10000000001' and '10000000003' ORDER BY age LIMIT 0,5
## 多表
内连接:只有满足条件的才会显示连接上的其余不显示
SELECT * FROM 表名,表名
会有非常多的冗余
select * from 表名 as 简称,表名 as 简称inner join on 条件
有条件的查询,as 可以用空格代替
外连接:分左外,右外
大部分用左外
select * from 表名 as 简称 left join 表名 as 简称 on 条件
主表信息会全部展示,从表只有匹配上的显示
右外将left join改为right join
聚合函数
Count()求有效数据的数量
子查询可以嵌套
表之间的关系
一对多:在多的里面加少的
多对多:需要中间表
一对一
ER图
矩形表示实体
菱形表示关联关系
椭圆表示字段名
第一范式
确保每列的原子性(不可再拆分了)
第二范式
在满足第一范式,拆表
第三范式
保证列与列没有依赖关系
事务
一旦有一条SQL语句失败不管前面执行了多少都会回滚。