集合
集合的个数不固定,可以任意扩容,可以随时添加删除元素。
List集合,特点:可重复、有序
List集合中一些方法的应用:
.add(Object o)//将元素添加到集合对象中
.get(int n)//获取索引为n的元素
.size()//获取集合的元素个数
迭代器
普通迭代器(Iterator)在遍历集合的同时不能添加或删除元素,否则会报:并发修改异常
列表迭代器(ListIterator)在遍历集合的同时可以修改集合中的元素(增、删),必须使用列表迭代器中的方法。
Collection类
.max(List)//获取集合中最大的元素
.sort(List)//对集合进行升序排列
.reverse(List)//对集合进行翻转
.shuffle(List)//把集合打乱,进行随机排序
Set集合
Set集合的唯一性依赖:equals() 和 hashCode()两个方法,默认调用的是Object类中的这两个方法,比较的是地址值是否相同。若要保证其内容的位移唯一性则需要重写这两个方法。
Map集合
.put(Integer , String)//把元素添加到集合中
.get(Integer)//根据键,获取值
Map集合的遍历需要先获取所有键的集合,再获取迭代器对象,再对迭代器进行遍历
IO流
异常处理方式
try{
//尝试要执行的代码
}catch(Exception e){
//出现问题后的代码(解决方案)
}finally{
//即使try, catch 中有return, finally 里边的代码都会执行
}
抛出异常是加在函数名的后面的
public static void shows throws Exception{//此时该函数就抛出了异常
}
IO流体系
字符读写数据的IO流
Reader : FileReader、BufferdReader
Writer : FileWiter、BufferedWriter
字节读写数据的IO流
InputStream : FileInputStream、BufferedInputStream
OutoutStream : FileOutputStream、BufferedOutputStream
将文件封装成file对象的方法
1、File file = new File("路径+文件名");//根据字符串形式的父目录以及子目录创建file对象
2、File file = new File("路径" , "文件名");//根据字符串形式的父目录以及子目录创建file对象
3、File file = new File("路径");
File file1 = new File(file , "文件名");//根据父目录对象,以及字符串形式的子目录来获取file对象
File类
.createNewFile()//创建文件
.mkdir()//创建单级目录文件夹(平常很好用)
.mkdirs()//创建多级目录文件夹(也可以创建单级目录)
.isDirectory()//判断file是否是文件夹
.isFile()//判断file是否是文件
.exists()//判断file是否存在
.getAbsolutePath()//获取file的绝对路径
.getPath()//获取file的路径
.getName()//获取文件名
.list()//获取文件夹下所有的名称数组
.listFiles()//获取文件夹的File对象数组
Reader类
.read()//读取文档的内容,返回的是ASCI码
.close()//释放资源(每次读取完文件一定要执行的操作)
.read(char[ ])//一次读一个字符串,将读取到的内容存入数组中,并返回读取到的有效字符数,否则返回-1
writer类
.writer(' ')//一次写入一个字符
.writer(char[ ] , star , len)//一次写入一个字符数组
.writer(str)//写入一个字符串,writer()方法的执行都会把原文档的内容给覆盖掉
在使用字符缓冲流时,如果遇到换行的情况,就要加上"\r\n" 来进行换行。而其他方法则不需要
字符流只能拷贝纯文本文件,拷贝其他类型的文件可使用字节流
反射
通过反射方式获取构造方法
getConstructor(Class<?>...parameterTypes) //返回一个Constructor对象,仅公共构造函数
getDeclaredConstructor(Class<?>...parameterTypes) //返回一个Constructor对象,可获取私有构造函数
getConstructor() //返回此类型所有(不含私有)构造函数的数组
Class<?>...:可变参数,代表Class类型的数组
?:通配符,代表不确定的任意类型
通过反射方式获取成员方法并使用
getMethod(String name,Class<?>...parameterTypers) //返回一个Method对象,仅公共成员方法
getDeclaredMethod(String, Class<?>...) //返回一个Method对象,可获取私有成员方法
getMethods() //返回此类所有(不含私有)方法的数组
name : 方法名
parameterTypers : 方法的参数列表
method.setAccessible(true) //开启暴力反射,私有的方法也能反射出来
method.invoke(...) //调用方法
反射方法获取成员变量并使用
多线程没讲