集合 容器 存储对象的对象
Collection
接口特点: 元素是Object
常用方法:
add(Object o):把o对象放入集合
addAll(Collection c):把c集合中所有元素一次性添加到集合中
contains(Object o):判断集合中是否存在元素o
remove(Object o):删除元素o
size():获得集合长度
toArray():把集合转成数组
遍历:
迭代遍历 for-each
List Collection子接口
接口特点:元素有顺序,有下标,可以重复
常用方法:
add(int pos , Object o):将元素o插入到pos下标
remove(int pos):删除pos下标的元素
get(int pos):获得pos下标的元素
indexOf(Object o):获得o元素的下标, 如果不存在,返回-1
遍历:
1.下标遍历
2.迭代遍历 for-each
实现类:
ArrayList 数组实现 查询快 增删慢 1.2 线程不安全 快
LinkedList 链表实现 查询慢 增删快
Vector 数组实现 1.0 线程安全 慢
Collections
reverse(List list):将list转置
shuffle(List list):将list随机打乱次序
sort(List list):排序
Set Collection子接口
接口特点:元素无顺序,无下标,元素内容不可以重复
常用方法: 无
遍历:
迭代遍历 for-each
实现类:
1.HashSet
自定义的对象放入HashSet,为了保证元素内容不重复,就必须:
1)覆盖hashCode()方法,保证相同对象返回相同的int;尽量保证不同对象返回不同的int
2)覆盖equals()方法,保证相同对象equals返回true
2.LinkedHashSet HashSet的子类 维护元素进入集合的顺序
3.TreeSet
SortedSet接口(Set的子接口)实现类 对元素自动排序
Map
接口特点:元素是key-value对 无顺序(无下标) key唯一 value可以重复 通过key查找对应的value
常用方法:
put(K key,V value):把key-value对添加到Map中 如果key已存在,新的value会覆盖旧的value
get(K key):通过key查找对应的value 如果key不存在,返回null
remove(K key):删除key所对应的键值对
size():集合长度
containsKey(K key):判断Map中是否包含key键
containsValue(V value):判断Map中是否包含value值
遍历:
keySet():返回Map中所有的key Set
values():返回Map中所有的value Collection
实现类:
1.HashMap 1.2 线程不安全 快 允许用null作为key或者value
2.LinkedHashMap HashMap的子类 维护键值对添加到集合中的顺序
3.TreeMap SortedMap(Map的子接口)实现类 自动对key排序
4.Hashtable 1.0 线程安全 慢 不允许用null作为key或者value
泛型: 类型的变量
集合中的泛型 约定集合中元素的类型
队列 FIFO 先进先出
可以基于LinkedList封装队列类
可以直接使用Queue接口(Collection子接口) since5.0
栈 LIFO 后进先出
树
============================================================================================================
异常处理 容错性
异常处理: 当异常发生时,执行特定的代码,减少异常的影响
try{
插卡
输入密码和金额2000
余额-=2000
吐钱2000
}
catch(吐钱异常 e){
余额+=2000
}
finally{
退卡
}
异常的分类
Throwable
|- Error 错误 严重 无法避免 无法处理
|- Exception 异常 可以处理
|- RuntimeException及子类 未检查异常 可以避免 可处理可不处理
|- 非RuntimeException子类包括Exception自身 已检查异常 不可避免 必须处理
异常的产生和传递
产生: throw 抛出一个异常 等同于return 让函数以异常返回
异常的处理
1. 声明抛出 处理已检查异常
2. 捕获异常 处理一切异常
try - catch
try - catch - finally{ 无论如何都会执行 ,通常用来释放资源 }
try - finally
自定义异常 继承Exception 或 继承RuntimeException(推荐)
===============================================================================================================
多线程
进程: OS中并发的一个任务 CPU分时间片交替运行, 宏观并行, 微观串行
线程: 在一个进程中并发的一个顺序执行流程
三要素:
CPU : 由OS分配
存储空间: 堆空间共享 栈空间独立
代码: 继承Thread,覆盖run方法 ; 实现Runnable接口,实现run方法
一个Thread对象代表一个线程
ExecutorsService : 线程池 重用线程资源
submit(Runnable t) 提交任务对象
多线程共同访问同一个对象(临界资源),如果破坏了不可分割的操作(原子操作),会造成数据不一致
每个对象都内置了一个互斥锁标记,用来分配给线程
synchronized
synchronized(o){ } 对o加锁的同步代码块
只有拿到o的锁标记的线程,才能进入对o加锁的同步代码块
线程离开对o加锁的同步代码块时,会释放o的锁标记
synchronized 方法修饰符 同步方法
只有拿到o的锁标记的线程,才能调用o的同步方法
o.wait():必须在对o加锁的同步代码块中 1.释放所有的锁标记 2.线程进入等待队列
o.notify()/o.notifyAll() 必须在对o加锁的同步代码块中 从等待队列中释放一个/全部线程
===========================================================================================================
I/O 输入/输出
流的三种分类
数据方向 输入(读数据)/输出(写文件)
数据单位 字节(处理一切数据)/字符(处理文本数据)
流的功能 节点(实际负责数据传输)/过滤(为节点流增强功能)
InputStream/OutputStream 字节流的父类 抽象类
OutputStream
write(int a):把一个字节写出去
write(byte[] bs):把字节数组中所有字节写出去
write(byte[] bs , int start , int len):把字节数组的一部分写出去
InputStream
int read():读一个字节 返回值:读到的数据 -1表示文件结束
int read(byte[] bs):把bs数组尝试读满 返回值:读到的字节数量 -1表示文件结束
int read(byte[] bs,int start , int len):尝试读满bs数组的一段 返回值:读到的字节数量 -1表示文件结束
FileInputStream/FileOutputStream 读写文件 节点流
DataInputStream/DataOutputStream 读写8种基本类型和String 过滤流
BufferedInputStream/BufferedOutputStream 缓冲流 过滤流
flush():清空缓冲区
PrintStream 缓冲输出流
ObjectInputStream/ObjectOutputStream 读写Object 过滤流
对象序列化:把对象通过流传输
只有实现了Serializable接口的对象, 才能序列化
用transient修饰的属性,不参与序列化
RandomAccessFile 随机访问文件 seek(int pos):定位文件指针
1) 创建节点流
2) 封装过滤流
3) 读写数据
4) 关闭流
字符流 处理文本数据 方法针对文本数据 更好处理字符编解码
编码方式和解码方式不统一时,可能造成乱码问题
ASCII 美国
ISO-8859-1 西欧
GB2312 / GBK 简体中文
Big5 繁体中文
unicode 全球统一 UTF-16 UTF-8
Reader/Writer 字符流的父类 抽象类
FileReader/FileWriter 文件字符流 节点流
BufferedReader/BufferedWriter 缓冲流 过滤流
PrintWriter
InputStreamReader/OutputStreamWriter 桥转换 字节流--字符流 可以指定编解码方式
File 代表磁盘上的一个文件或目录
==============================================================================================================
类对象: 类加载的产物,记录了一个类的信息 (父类? 接口? 属性? 方法? 构造方法?)
Class类
获得类对象的三种方式:
1. 类名.class (可以直接获得8种基本类型的类对象)
2. Class.forName("类的全名") 通过类名获得类对象 可能会加载该类
3. getClass() 通过类的对象获得类对象
java.lang.reflect
Field : 代表一个属性
Method : 代表一个方法 invoke(): 调用该方法
Class newInstance() 创建类的对象
注释: 描述代码的文字
标注: 描述代码的代码
@标注名(属性名=属性值,属性名=属性值)
单值标注:如果属性名为value,"value="可以省略 @标注名(value=1) @标注名(1)
==============================================================================================================
开闭原则 扩展开放 修改关闭
工厂模式 工厂对象负责对象的创建
数据展现 显示层 View UI 处理用户交互
数据处理 业务层 Service 数据的业务处理
数据来源 数据访问层 Dao 处理数据的增删改查
===========================================================================================================
集合 容器 存储对象的对象
Collection
接口特点: 元素是Object
常用方法:
add(Object o):把o对象放入集合
addAll(Collection c):把c集合中所有元素一次性添加到集合中
contains(Object o):判断集合中是否存在元素o
remove(Object o):删除元素o
size():获得集合长度
toArray():把集合转成数组
遍历:
迭代遍历 for-each
List Collection子接口
接口特点:元素有顺序,有下标,可以重复
常用方法:
add(int pos , Object o):将元素o插入到pos下标
remove(int pos):删除pos下标的元素
get(int pos):获得pos下标的元素
indexOf(Object o):获得o元素的下标, 如果不存在,返回-1
遍历:
1.下标遍历
2.迭代遍历 for-each
实现类:
ArrayList 数组实现 查询快 增删慢 1.2 线程不安全 快
LinkedList 链表实现 查询慢 增删快
Vector 数组实现 1.0 线程安全 慢
Collections
reverse(List list):将list转置
shuffle(List list):将list随机打乱次序
sort(List list):排序
Set Collection子接口
接口特点:元素无顺序,无下标,元素内容不可以重复
常用方法: 无
遍历:
迭代遍历 for-each
实现类:
1.HashSet
自定义的对象放入HashSet,为了保证元素内容不重复,就必须:
1)覆盖hashCode()方法,保证相同对象返回相同的int;尽量保证不同对象返回不同的int
2)覆盖equals()方法,保证相同对象equals返回true
2.LinkedHashSet HashSet的子类 维护元素进入集合的顺序
3.TreeSet
SortedSet接口(Set的子接口)实现类 对元素自动排序
Map
接口特点:元素是key-value对 无顺序(无下标) key唯一 value可以重复 通过key查找对应的value
常用方法:
put(K key,V value):把key-value对添加到Map中 如果key已存在,新的value会覆盖旧的value
get(K key):通过key查找对应的value 如果key不存在,返回null
remove(K key):删除key所对应的键值对
size():集合长度
containsKey(K key):判断Map中是否包含key键
containsValue(V value):判断Map中是否包含value值
遍历:
keySet():返回Map中所有的key Set
values():返回Map中所有的value Collection
实现类:
1.HashMap 1.2 线程不安全 快 允许用null作为key或者value
2.LinkedHashMap HashMap的子类 维护键值对添加到集合中的顺序
3.TreeMap SortedMap(Map的子接口)实现类 自动对key排序
4.Hashtable 1.0 线程安全 慢 不允许用null作为key或者value
泛型: 类型的变量
集合中的泛型 约定集合中元素的类型
队列 FIFO 先进先出
可以基于LinkedList封装队列类
可以直接使用Queue接口(Collection子接口) since5.0
栈 LIFO 后进先出
树
============================================================================================================
String
charAt(int index):通过下标获得字符
toCharArray():返回char[]
String(char[] cs):利用字符数组构造String
toUpperCase()/toLowerCase():转大写/转小写
length():字符串长度
trim():去掉字符串前后的空格和换行
startsWith(String str):判断String是否以str开头
endsWith(String str):判断String是否以str结尾
indexOf(String str):返回子串在String中首下标
indexOf(String str,int begin):从begin位置开始找, 返回子串的首下标
lastIndexOf(String str):从后往前找 找子串首下标
replace(String str,String str2):用str2子串替换str子串
substring(int begin,int end):返回begin到end下标的子串 子串包含起始下标,不包含结束下标
split(String str):以str为分隔符,将字符串拆分为多个子串 返回String[]
String:内容不变
StringBuilder:内容可变
intern():返回String在串池中的地址
串池:减少重复的对象, 资源共用
============================================================================================================
异常处理 容错性
异常处理: 当异常发生时,执行特定的代码,减少异常的影响
try{
插卡
输入密码和金额2000
余额-=2000
吐钱2000
}
catch(吐钱异常 e){
余额+=2000
}
finally{
退卡
}
异常的分类
Throwable
|- Error 错误 严重 无法避免 无法处理
|- Exception 异常 可以处理
|- RuntimeException及子类 未检查异常 可以避免 可处理可不处理
|- 非RuntimeException子类包括Exception自身 已检查异常 不可避免 必须处理
异常的产生和传递
产生: throw 抛出一个异常 等同于return 让函数以异常返回
异常的处理
1. 声明抛出 处理已检查异常
2. 捕获异常 处理一切异常
try - catch
try - catch - finally{ 无论如何都会执行 ,通常用来释放资源 }
try - finally
自定义异常 继承Exception 或 继承RuntimeException(推荐)
===============================================================================================================
多线程
进程: OS中并发的一个任务 CPU分时间片交替运行, 宏观并行, 微观串行
线程: 在一个进程中并发的一个顺序执行流程
三要素:
CPU : 由OS分配
存储空间: 堆空间共享 栈空间独立
代码: 继承Thread,覆盖run方法 ; 实现Runnable接口,实现run方法
一个Thread对象代表一个线程
ExecutorsService : 线程池 重用线程资源
submit(Runnable t) 提交任务对象
多线程共同访问同一个对象(临界资源),如果破坏了不可分割的操作(原子操作),会造成数据不一致
每个对象都内置了一个互斥锁标记,用来分配给线程
synchronized
synchronized(o){ } 对o加锁的同步代码块
只有拿到o的锁标记的线程,才能进入对o加锁的同步代码块
线程离开对o加锁的同步代码块时,会释放o的锁标记
synchronized 方法修饰符 同步方法
只有拿到o的锁标记的线程,才能调用o的同步方法
o.wait():必须在对o加锁的同步代码块中 1.释放所有的锁标记 2.线程进入等待队列
o.notify()/o.notifyAll() 必须在对o加锁的同步代码块中 从等待队列中释放一个/全部线程
===========================================================================================================
I/O 输入/输出
流的三种分类
数据方向 输入(读数据)/输出(写文件)
数据单位 字节(处理一切数据)/字符(处理文本数据)
流的功能 节点(实际负责数据传输)/过滤(为节点流增强功能)
InputStream/OutputStream 字节流的父类 抽象类
OutputStream
write(int a):把一个字节写出去
write(byte[] bs):把字节数组中所有字节写出去
write(byte[] bs , int start , int len):把字节数组的一部分写出去
InputStream
int read():读一个字节 返回值:读到的数据 -1表示文件结束
int read(byte[] bs):把bs数组尝试读满 返回值:读到的字节数量 -1表示文件结束
int read(byte[] bs,int start , int len):尝试读满bs数组的一段 返回值:读到的字节数量 -1表示文件结束
FileInputStream/FileOutputStream 读写文件 节点流
DataInputStream/DataOutputStream 读写8种基本类型和String 过滤流
BufferedInputStream/BufferedOutputStream 缓冲流 过滤流
flush():清空缓冲区
PrintStream 缓冲输出流
ObjectInputStream/ObjectOutputStream 读写Object 过滤流
对象序列化:把对象通过流传输
只有实现了Serializable接口的对象, 才能序列化
用transient修饰的属性,不参与序列化
RandomAccessFile 随机访问文件 seek(int pos):定位文件指针
1) 创建节点流
2) 封装过滤流
3) 读写数据
4) 关闭流
字符流 处理文本数据 方法针对文本数据 更好处理字符编解码
编码方式和解码方式不统一时,可能造成乱码问题
ASCII 美国
ISO-8859-1 西欧
GB2312 / GBK 简体中文
Big5 繁体中文
unicode 全球统一 UTF-16 UTF-8
Reader/Writer 字符流的父类 抽象类
FileReader/FileWriter 文件字符流 节点流
BufferedReader/BufferedWriter 缓冲流 过滤流
PrintWriter
InputStreamReader/OutputStreamWriter 桥转换 字节流--字符流 可以指定编解码方式
File 代表磁盘上的一个文件或目录
==============================================================================================================
类对象: 类加载的产物,记录了一个类的信息 (父类? 接口? 属性? 方法? 构造方法?)
Class类
获得类对象的三种方式:
1. 类名.class (可以直接获得8种基本类型的类对象)
2. Class.forName("类的全名") 通过类名获得类对象 可能会加载该类
3. getClass() 通过类的对象获得类对象
java.lang.reflect
Field : 代表一个属性
Method : 代表一个方法 invoke(): 调用该方法
Class newInstance() 创建类的对象
注释: 描述代码的文字
标注: 描述代码的代码
@标注名(属性名=属性值,属性名=属性值)
单值标注:如果属性名为value,"value="可以省略 @标注名(value=1) @标注名(1)
==============================================================================================================
开闭原则 扩展开放 修改关闭
工厂模式 工厂对象负责对象的创建
数据展现 显示层 View UI 处理用户交互
数据处理 业务层 Service 数据的业务处理
数据来源 数据访问层 Dao 处理数据的增删改查