就业第七天
集合之set接口
特点:元素存取无序,元素不可重复,无索引
HashSet集合
创建集合对象
添加元素对象
遍历集合对象
1.转数组
2.迭代器
3.增强for
通过查看源码发现:
确保元素唯一性,先比hash值,再比地址值,或进行equals方法比较.比较结果一样则认为重复不添加.不一样则添加
当hashCode方法永远返回1时,所有对象的hash值一样.
有一些对象的成员变量不同,但是还是需要进行hash和equals方法进行比较
为了提高程序的效率,可以把成员变量和hashCode方法的返回值关联起来,
collection和collects有什么去区别?
collection是集合体系的最顶层,包含了集合体系的共性
collections是一个工具类
Map双列集合(接口)
概述:双列集合用于提供一对一数据的处理,与Collection属于同级
特点:将键映射到值得对象.一个映射不能包含重复的键,每个键最多只能映射一个值
键不可重复,值可以重复
键是无序的
Map和Collections的区别
Map:双列集合,用于处理具有对应关系的数据,key是不可重复的,也叫夫妻对集合
Collection:单列集合,具有不同的子体系,有有序的,也有无序的,也叫单身汉集合
常用功能:
删除功能:
void clear();清空集合
V remove(Object obj):根据指定的key删除对应关系,并返回key对应的值
判断功能:
boolean containKey();判断指定key是否存在
boolean containValue();判断指定的value是否存在
boolean isEmpty();判断集合是否为空
覆盖功能:
V put(K key,V value);将key映射到value,key存在则覆盖value,
遍历功能:
Set<Map.Entry,V) entrySet()
Set<K> keySet();将所有的键返回成一个Set集合
Collection<V> values();将所有的元素返回成一个Set集合或List集合,
获取功能:
V get(Object key)
Map的遍历方式:
1.找出所有的key,遍历所有的key集合,获取key,通过get()方法获取value
2.通过Map的EntrySet方法来把Key和Value输入到Map的内部类Entry中,再调用Entry对象的getKey方法和getValue方法来遍历输出
可变参数
当参数不确定,但类型要一致,Java可以直接转成数组
实参:(实参1,实参2,....)
形参:类型名...变量名
注意:可以在可变参数前添加别的形参,但不可以在后面加
就业第八天
异常:
概述:不正常,我们在代码出现的编译或者运行时的错误
异常包含了错误的类型、原因以及位置
体系结构:
Throwable(最顶层):
Error:出现的不能够处理的严重问题
Exception:可以处理的问题,编译时期的异常
RuntimeException:编译时正常,运行时发生的异常
常见异常:
NullPointerException:空指针
ArrayIndexOutOfBoundException:数组指针越界
任何数字除以0都会抛出异常
异常的处理方式:
//第一种方式
捕获
try{
存放可能发生的异常代码
可以有多行代码
}catch(异常类型 异常对象名){
对异常进行处理的代码
也可以通过异常对象名获取异常的信息
}finally{
用于释放资源
清理垃圾
}
首先执行try语句
发现异常,异常下面的代码不执行,跳入catch语句,catch语句结束后,try...catch结束
没有异常,不执行catch语句
处理多个异常
使用多个try...catch语句
使用一个try和多个catch语句
多个catch的顺序
多个
平级没有顺序
有子父类,父类必须在后面
//第二种方式
抛出
在不想处理或没有能力处理异常时,可以选择抛出
关键字:throws,在方法的声明处使用
定义格式:
方法名(参数列表) throws 异常类型1,异常类型2........{
}
JVM处理异常:
异常我们不处理,JVM会把异常的种类,原因还有把位置显示在命令行,并且终止程序,异常后的代码不再执行
try...catch操作捕获的异常
String getMessage();
返回异常原因
String toString();
返回异常类型
void printStackTrace();
输出异常原因和类型,还有位置
异常分类
1.运行时期异常:RuntimeExceptipon的子类就是运行时期异常,可以自行处理或者不处理
2.编译时期异常:
非RuntimeException ,编译时期的一样必须处理
两种异常处理方式
throws:处理异常的一种方式将异常抛出,由调用者处理
throw:制造异常的方式,并且结束方法
注意
抛出(throws)
递归:大事化小,小事化了
注意:
1.递归一定要有出口
2.递归次数不宜过多
就业第九天
IO流
绝对路径:固定不可变的路径,以盘符开头
相对路径:相对于某个参照物,不以盘符开头
FIle类
常用功能:
创建功能
boolean createNewFile():
创建新文件,返回是否创建成功
文件不存在的时候返回true并创建文件,存在的时候返回false
boolean mkdir():
创建目录,返回是否成功
文件夹不存在的时候返回true并创建,存在的时候返回false
boolean mkdirs();
创建多级目录,包括指定路径中缺少的父级目录,
当多级文件夹不存在时返回true并创建多级文件夹,存在返回false
判断功能
boolean exists():
判断文件或文件夹是否存在,存在true,否则false
boolean isAbsolute():
判断File对象指向的路径是否是绝对路径,是true,否false
boolean isDirectory():
判断File对象指向的是否是目录,是true,否false
boolean isFile():
判断File对象指向的是否是文件,是true,否false
boolean isHidden():
判断File对象指向的路径是否有隐藏属性,是true,否false
获取功能
String[] list():获取当前路径下所有文件和目录的名称,返回成一个字符串数组
File[] listFiles():获取当前路径下所有文件和目录,返回成一个File类的对象数组
static File[] listRoots():返回当前电脑的所有盘符
删除功能
boolean delete():
删除文件或文件夹,返回是否成功
当指定文件或文件夹存在时删除文件,返回true,不存在时返回false
注意:delete()方法删除文件夹,文件夹下面不能有文件和文件夹
IO流分类
流向
输入流 读取数据 FileReader Reader
输出流 写出数据 FileWriter Writer
数据类型
字节流 字节输入流 读取数据 InputStream类
字节输出流 写出数据 OutputStream类
字符流 字符输入流 读取数据 Reader类
字符输出流 写出数据 Writer类
递归中
就业第十天
转换流
OutputStreamWriter:字节输出流转字符输出流
InputStreamReader:字节输入流转字符输入流
打印流
PrintStream:字节打印流
PrintWriter:字符打印流
特点:
1.自动换行
2.输出除了字节以外的任意类型
3.通过构造方法配置,实现自动刷新(调用println、printf或format才有用)
4.包装流,不具备写功能
5.可以把字节流转换流字符输出流
对象操作流:可以用于读写任意类型的对象
ObjectInputStream:对象输入流
readObject
ObjectInputStream(InputStream in)
ObjectOutputStream:对象输出流
writeObject
ObjectOutputStream(OutputStream out)
注意:使用对象输出流写出对象,只能用对象输入流写入
解决对于实现序列化接口黄色警告的问题
集合
Properties :表示一个持久的属性集,属性列表中每个键及对应值都是一个字符串
构造方法:
Properties
和IO流结合
1.void list(PrintWriter out)
2.void load(Reader reader)
3.void store(writer
属性 配置 Map();
乱码
编码表
ASCII:美国标准码
GB2312 ---GBK 国标和国标扩展码
Unicode:万国码
UTF-8:Unicode的一种实现方式,长度可变的码表,一个字符栈1or2or3个字节
ANSI:本地编码表,根据系统决定编码
原因
字符串编码的转换
标准输入输出流
public static final InputStream in;字节输入流,用来读取键盘录入的数据
public static final OutputStream out;字节输出流,将数据输出到控制台