day15

Collections工具类

/*
    Collections:是java针对集合操作专门提供的一个工具类

    静态方法:
        public static <T> void sort(List<T> list) 底层是调用了Arrays工具类中的sort方法
        public static <T> int binarySearch(List<?> list,T key) 二分查找【前提是序列是有序的】
        public static <T> T max(Collection<?> coll) 求集合中最大值
        public static void reverse(List<?> list) 反转
        public static void shuffle(List<?> list) 随机打乱元素

 */

/*
    我们在说Vector类的时候,说到即便是安全的,我们也不会用它。
    使用Collections工具类可以将任意一个不安全的集合类变成一个线程安全的集合类
 */
public class CollectionsDemo2 {
    public static void main(String[] args) {
        ArrayList<Integer> list1 = new ArrayList<>();

        Vector<Integer> v1 = new Vector<>();



//        List<Integer> list2 = Collections.synchronizedList(list1);
//        list2.add(1);
//        list2.add(1);
//        list2.add(1);
//        for (Integer i : list2) {
//            System.out.println(i);
//        }
    }
}

递归

递归:方法定义时内部调用自身的现象

fun1().fun2() 这叫方法的链式调用
fun1(show1()) 这叫方法的嵌套调用

写递归需要考虑的东西:
    1、开始条件
    2、出口

递归:
    1、从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,讲的故事内容:  1
        从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,讲的故事内容:    2
            从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,讲的故事内容:   3
                从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,讲的故事内容: 4
                ....
       结束条件:山倒了,老和尚圆寂了。

    2、来数加学习大数据,找工作,挣钱,娶老婆,生娃:
        来数加学习大数据,找工作,挣钱,娶老婆,生娃:
            来数加学习大数据,找工作,挣钱,娶老婆,生娃:
            ...
       结束条件:挣不到钱,没有生娃...

异常

/*
    异常:java程序编译或运行过程中出现的问题
    Throwable:
        Error: 表示非常严重的问题,自己无法解决的问题
        Exception:
            除了RuntimeException其它异常【编译时期异常】: 一般指的是异常尚未处理就编译了
            RuntimeException【运行时期异常】: 运行过程中报错了,一般情况下是因为语法逻辑不正确导致

    JVM遇到问题时,默认的处理方案是:停止程序,抛出错误。
 */

抛出

throws: 抛出
    在方法的定义上抛出异常类, throws本身是不会处理异常的,只是当时方法内部不用处理了,
    但是当调用者调用有问题的方法时,需要调用者进行处理

    throw: 抛出
    在方法内部抛出异常对象,表示一个确定的异常

    注意:
        当调用者调用抛出运行时期异常的方法时,可以选择不去处理,也能运行。
        当调用者调用抛出编译时期异常的方法是,必须要进行处理,否则编译不通过无法运行。

   小故事理解 throw throws try...catch 的使用:
        江川是一个快乐的小矿工,有一天他挖到了一个远古炸弹💣【throw】,往洞外运输【throws】,运输给了矿厂管理人员

异常的处理方案:

    1try...catch...finally

try...catch使用注意事项:
    1、当try中出现异常时,JVM会对应创建一个异常类对象
    2、自上而下会与catch中的异常进行匹配,若匹配上就相当于处理了,执行catch中的逻辑
    3、若try中有多个异常,当第一个异常触发时,try中的其它后续代码都不会执行,JVM会对应创建一个异常类对象进行第二步匹配
    4、可以直接写一个catch里面是所有异常的父类、
    5、若存在多个catch匹配,需要将父类异常往后写
    6、若使用jdk新特性的写法的话,异常类之间不能存在继承关系
        管理员对炸弹💣进行处理【try..catchtry {
//            System.out.println(arr[8]);
            System.out.println(3/0);// new ArrayIndexOutOfBoundsException()
        } catch (Exception e) { // = new ArrayIndexOutOfBoundsException()
//            System.out.println(e.getMessage());
//            System.out.println(e.toString());
            //void printStackTrace()
            //将此throwable和其追溯打印到标准错误流。
            e.printStackTrace();
        }

File【文件】

File【文件】: 是计算机中所有文件的抽象表示, 将来File对象目标可能存在,也可能不存在。

构造方法:

        public File(String pathname)
        public File(String parent,String child)
        public File(File parent,String child)

    路径:
        绝对路径【完整路径】:D:\projects\IdeaProjects\bigdara32\java\src\com\shujia\day15\ketang\a1.txt
        相对路径:java/src/com/shujia/day15/ketang/a1.txt

创建功能

    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 String getAbsolutePath() 获取绝对路径
    public String getPath() 获取相对路径
    public String getName() 获取文件或文件夹的名字
    public long length() 获取文件中字节数
    public long lastModified() 获取上一次修改的时间戳【毫秒级别的】

高级获取功能

    public String[] list() 将目录下所有的文件以及文件夹的名字放到一个数组中返回
    public File[] listFiles() 将目录下所有的文件以及文件夹都封装成一个一个的File对象放到一个数组中

案例

//需求:获取ketang目录下所有.txt后缀的文件
public class FileDemo6 {
    public static void main(String[] args) {
        File file = new File("java/src/com/shujia/day15/ketang");

        //获取当前目录下所有的文件或者文件夹的集合
        File[] files = file.listFiles();


        if(files!=null){
            for (File file1 : files) {
                if(file1.isFile() && file1.getName().endsWith(".txt")){
                    System.out.println(file1.getName());
                }
            }
        }
    }
}

过滤

/*
    public String[] list(FilenameFilter filter) 参数 filter 是一个实现了 FilenameFilter 接口的实例,该接口有一个 accept(File dir, String name) 方法,用于决定哪些文件名应该被包含在返回的数组中。
    public File[] listFiles(FilenameFilter filter) 这个方法返回一个 File 对象数组,包含目录中满足 FilenameFilter 条件的文件。
参数 filter 同样是一个实现了 FilenameFilter 接口的实例。

 */
public class FileDemo7 {
    public static void main(String[] args) {
        File file = new File("java/src/com/shujia/day15/ketang");

        //public File[] listFiles(FilenameFilter filter)
        File[] files = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                // 当这里返回true的时候,表示将文件放到数组中
                // dir表示当前目录,name表示文件或者文件夹名字
                File f = new File(dir, name);
                return f.isFile() && f.getName().endsWith(".txt");
            }
        });

        if(files!=null){
            for (File file1 : files) {
                System.out.println(file1);
            }
        }

    }
}
posted @   先瞄准再开枪  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示