Java基础之Set接口、IO流,File类

1.Set接口

Set接口:存储无序的,不可重复的元素。—相当于高中的“集合”概念

Set使用的方法基本上都是Collection接口下定义的。
添加进Set集合中的元素所在的类一定要重写equals() 和 hashCode()。要求重写equals() 和 hashCode()方法保持一致。

  1. 无序性:无序性!= 随机性。真正的无序性,指的是元素在底层存储的位置是无序的。
  2. 不可重复性:当向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());
            }
        }
    }




发布了29 篇原创文章 · 获赞 0 · 访问量 344

猜你喜欢

转载自blog.csdn.net/weixin_45673369/article/details/103058155