1.Set接口
Set接口:存储无序的,不可重复的元素。—相当于高中的“集合”概念
Set使用的方法基本上都是Collection接口下定义的。
添加进Set集合中的元素所在的类一定要重写equals() 和 hashCode()。要求重写equals() 和 hashCode()方法保持一致。
- 无序性:无序性!= 随机性。真正的无序性,指的是元素在底层存储的位置是无序的。
- 不可重复性:当向Set中添加进相同的元素的时候,后面的这个不能添加进去。
|------HashSet(主要的实现类)
|------LinkedHashSet(是HashSet的子类,当我们遍历集合元素时,是按照添加进去的顺序实现的;频繁的遍历,较少的添加、插入操作建议选择此)
|------TreeSet(可以按照添加进集合中的元素的指定属性进行排序)
>要求TreeSet添加进的元素必须是同一个类的!
>两种排序方式:
自然排序:
①要求添加进TreeSet中的元素所在的类implements Comparable接口
②重写compareTo(Object obj),在此方法内指明按照元素的哪个属性进行排序
③向TreeSet中添加元素即可。若不实现此接口,会报运行时异常
定制排序:
①创建一个实现Comparator接口的实现类的对象。在实现类中重写Comparator的compare(Object o1,Object
o2)方法②在此compare()方法中指明按照元素所在类的哪个属性进行排序
③将此实现Comparator接口的实现类的对象作为形参传递给TreeSet的构造器中
④向TreeSet中添加元素即可。若不实现此接口,会报运行时异常
要求重写的compareTo()或者compare()方法与equals()和hashCode()方法保持一致。
何为Io流?
IO流用来处理设备之间的数据传输,上传文件和下载文件。
2.异常类
(1)Throwable类
Throwable类的常用方法 | 概述 |
---|---|
getMessage() | 获取异常信息,返回字符串。 |
toString() | 获取异常类名和异常信息,返回字符串 |
printStackTrace() | 获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。 |
(2)异常处理的两种方式
- try…catch…finally自己捕获处理
try {
可能出现问题的代码 ;
}catch(异常名 变量名){
针对问题的处理 ;
}finally{
释放资源;
}
- throws 抛给调用者
使用Alt+Enter万能纠错
注意:多个异常之间只能是平级的关系,不能出现子父类的继承关系
(3)throw与throws之间的区别
- throws
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常 - throw
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
这个异常对象可以是编译期异常对象,可以是运行期异常对象
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常
(4)final,finally和finalize之间的区别
- final:是一个状态修饰符, 可以用来修饰类 , 变量 , 成员方法.
修饰的类不能被子类继承
修饰的变量其实是一个常量不能被再次赋
修饰的方法不能被子类重写 - finally:用在try…catch…语句中 , 作用: 释放资源 . 特点: 始终被执行(JVM不能退出)
- finalize: Obejct类中的一个方法,用来回收垃圾
注意:
被finally控制的语句体一定会执行(前提 jvm没有停止),如果jvm虚拟机在finally之前停止,那便不会执行(比如System.exit(0))
(5)自定义异常:生活中我们无法描述的异常
注意:需要将我们自定义的异常类纳入到我们的异常体系中
继承自Exception
继承自RuntimeException
例如:银行取钱
public class MyTest {
public static void main(String[] args) {
int num = 100;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的取款金额");
int money = scanner.nextInt();
if (money <= num) {
num -= money;
} else {
throw new NoMoneyException("余额不足");
}
}
}
public class NoMoneyException extends RuntimeException{
public NoMoneyException(String msg) {
super(msg);
}
}
3.File类:文件和目录路径名的抽象表示形式
(1)File类的功能
File类的方法 | 概述 |
---|---|
public boolean createNewFile() | 创建一个新的文件 |
public boolean mkdir() | 创建单级文件夹 |
public boolean mkdirs() | 创建多级文件夹 |
public boolean delete() | 删除文件或者文件夹 |
public boolean renameTo(File dest) | 把文件夹重命名 |
public boolean isDirectory() | 判断是否是目录 |
public boolean isFile() | 判断是否是文件 |
public boolean exists() | 判断是否存在 |
public boolean canRead() | 判断是否可读 |
public boolean canWrite() | 判断是否可写 |
public boolean isHidden() | 判断是否隐藏 |
public boolean isAbsolute() | 判断是否用的绝对路径 |
public String getAbsolutePath() | 获取绝对路径 |
public String getPath() | 获取相对路径 |
public String getParent() | 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 |
public long lastModified() | 获取最后一次的修改时间,毫秒值 |
public String getName() | 获取名称 |
public String[] list() | 获取指定目录下的所有文件或者文件夹的名称数组 |
public File[] listFiles() | 获取指定目录下的所有文件或者文件夹的File数组 |
public File getParentFile() | 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。 |
(2)File类的文件名称过滤器的概述和使用
public String[] list(FilenameFilter filter) 返回String类型
public File[] listFiles(FilenameFilter filter) 返回File类型
举例:
判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
import java.io.File;
import java.io.FileFilter;
public class Home {
public static void main (String[] args) {
File file =new File("c:\\Users\\slcax\\Desktop");
File []a= file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".jpg")){
return true;
}else {
return false;
}
}
});
for (File file1 : a) {
System.out.println(file1.getName());
}
}
}