java_day15_Collections、递归、Exception、File

news/2024/10/18 20:02:54/文章来源:https://www.cnblogs.com/w-ll/p/18473220

一、Collections

Collections:是java针对集合操作专门提供的一个工具类静态方法:public static <T> void sort(List<T> list)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)

代码案例:

public class CollectionsDemo1 {public static void main(String[] args) {ArrayList<Integer> list1 = new ArrayList<>();list1.add(34);list1.add(7);list1.add(12);list1.add(734);list1.add(38);list1.add(29);System.out.println(list1);System.out.println("-------------------------------");//public static <T> void sort(List<T> list)Collections.sort(list1); // 底层是调用了Arrays工具类中的sort方法System.out.println(list1);//public static <T> int binarySearch(List<?> list,T key)// 二分查找【前提是序列是有序的】//[7, 12, 29, 34, 38, 734]System.out.println(Collections.binarySearch(list1, 100));//public static <T> T max(Collection<?> coll) 求集合中最大值System.out.println(Collections.max(list1));ArrayList<String> list2 = new ArrayList<>();list2.add("hello");list2.add("world");list2.add("java");list2.add("apple");list2.add("hadoop");System.out.println(Collections.max(list2));//public static void reverse(List<?> list)Collections.reverse(list1);System.out.println(list1);System.out.println("===========================");//public static void shuffle(List<?> list)  随机打乱元素Collections.shuffle(list1);System.out.println(list1); // [34, 734, 38, 7, 12, 29]  [34, 12, 7, 38, 29, 734]}
}
`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、学习大数据,找工作,挣钱,娶老婆,生娃:学习大数据,找工作,挣钱,娶老婆,生娃:学习大数据,找工作,挣钱,娶老婆,生娃:...结束条件:挣不到钱,没有生娃...
案例:
需求:使用递归实现一个数的阶乘```public class DiGuiDemo1 {public static void main(String[] args) {int res = jieCheng(5);System.out.println("5的阶乘是:" + res);}// 5*4*3*2*1public static int jieCheng(int i) {if (i == 1) {return 1;} else {return i * jieCheng(--i);// 5 * jieCheng(4)// 5 * 4 * jieCheng(3)// 5 * 4 * 3 * jieCheng(2)// 5 * 4 * 3 * 2 * jieCheng(1)}}//    public static void fun1(){
//        fun1();
//    }
}

三、Exception

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

代码案例:

public class ExceptionDemo1 {public static void main(String[] args) {
//        Demo demo = new Demo();
//        Object clone = demo.clone();//        int[] arr = {11,22,33,44};
//        System.out.println(arr[5]);int i = 5;int j = 0;System.out.println(i/j);System.out.println("hello world");}
}

异常处理方案

异常的处理方案:1、try...catch...finallytry...catch使用注意事项:1、当try中出现异常时,JVM会对应创建一个异常类对象2、自上而下会与catch中的异常进行匹配,若匹配上就相当于处理了,执行catch中的逻辑3、若try中有多个异常,当第一个异常触发时,try中的其它后续代码都不会执行,JVM会对应创建一个异常类对象进行第二步匹配4、可以直接写一个catch里面是所有异常的父类、5、若存在多个catch匹配,需要将父类异常往后写6、若使用jdk新特性的写法的话,异常类之间不能存在继承关系

代码案例:

public class ExceptionDemo2 {public static void main(String[] args) {int[] arr = {11, 22, 33, 44, 55};//        try {
//            System.out.println(arr[8]); // new ArrayIndexOutOfBoundsException()
//            System.out.println(10/3); // new ArithmeticException()
//            System.out.println("江川比李刚帅!");
//        }catch (ArrayIndexOutOfBoundsException e){ // = new ArrayIndexOutOfBoundsException()
//            System.out.println("出错啦!!");
//        }catch (ArithmeticException e){
//            System.out.println("除0错误!!");
//        }//        try {
//            System.out.println(arr[2]); // new ArrayIndexOutOfBoundsException()
//            System.out.println(10/0); // new ArithmeticException()
//            System.out.println("江川比李刚帅!");
//        }catch (ArithmeticException e){
//            System.out.println("除0错误!!");
//        }catch (Exception e){ // = new ArrayIndexOutOfBoundsException()
//            System.out.println("出错啦!!");
//        }try {System.out.println(arr[8]); // new ArrayIndexOutOfBoundsException()System.out.println(10 / 3); // new ArithmeticException()System.out.println("江川比李刚帅!");} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) { // = new ArrayIndexOutOfBoundsException()System.out.println("出错啦!!");}System.out.println("李刚真帅!");}
}

void printStackTrace()

public class ExceptionDemo3 {public static void main(String[] args) {int[] arr = {11, 22, 33, 44, 55};//        System.out.println(arr[8]);
//        System.out.println(3/0);try {
//            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();}System.out.println("李刚是世界首富!!");}
}
try...catch...finally
无论try中的代码是否出错,finally都会执行。
finally一般来说,用作释放资源的作用。

四、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 class FileDemo1 {public static void main(String[] args) {//public File(String pathname)
//        File f1 = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang\\a1.txt");
//        System.out.println(f1);
//        File f2 = new File("java/src/com/shujia/day15/ketang/a1.txt");
//        System.out.println(f2);//public File(String parent,String child)
//        File f1 = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang","a1.txt");
//        System.out.println(f1);//public File(File parent,String child)File file = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang");File f1 = new File(file, "a1.txt");System.out.println(f1);}
}
创建功能public boolean createNewFile()public boolean mkdir()public boolean mkdirs()
删除功能public boolean delete()
重命名功能public boolean renameTo(File dest)

代码案例:

public class FileDemo2 {public static void main(String[] args) throws Exception{File file = new File("java/src/com/shujia/day15/ketang/a1.txt");//public boolean createNewFile()
//        System.out.println(file.createNewFile());//public boolean mkdir() 创建单极文件夹
//        System.out.println(file.mkdir());//public boolean mkdirs() 创建多极文件夹
//        System.out.println(file.mkdirs());//public boolean delete() 只能删除空文件夹,或一个文件
//        System.out.println(file.delete());//public boolean renameTo(File dest)
//        File file2 = new File("java/src/com/shujia/day15/ketang/李刚.txt");
//        System.out.println(file.renameTo(file2));}
}
判断功能public boolean isDirectory()public boolean isFile()public boolean exists()public boolean canRead()public boolean canWrite()public boolean isHidden()

代码案例:

public class FileDemo3 {public static void main(String[] args) {File file = new File("java/src/com/shujia/day15/ketang/李刚.txt");// public boolean isDirectory()System.out.println(file.isDirectory());//public boolean isFile()System.out.println(file.isFile());//public boolean exists()System.out.println(file.exists());//public boolean canRead() 是否可读System.out.println(file.canRead());//public boolean canWrite() 是否可写System.out.println(file.canWrite());//public boolean isHidden() 是否被隐藏System.out.println(file.isHidden());}
}
基本获取功能public String getAbsolutePath()public String getPath()public String getName()public long length()public long lastModified()

代码案例:

public class FileDemo4 {public static void main(String[] args) {File file = new File("java/src/com/shujia/day15/ketang/李刚.txt");// public String getAbsolutePath() 获取绝对路径System.out.println(file.getAbsolutePath());//public String getPath() 获取相对路径System.out.println(file.getPath());//public String getName() 获取文件或文件夹的名字System.out.println(file.getName());//public long length() 获取文件中字节数System.out.println(file.length());//public long lastModified() 获取上一次修改的时间戳【毫秒级别的】
//        System.out.println(file.lastModified());String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(new Date(file.lastModified()));System.out.println("上一次修改的时间:"+time);}
}
高级获取功能public String[] list()public File[] listFiles()

代码案例:

public class FileDemo5 {public static void main(String[] args) {File file = new File("java/src/com/shujia/day15/ketang");//public String[] list() 将目录下所有的文件以及文件夹的名字放到一个数组中返回String[] nameList = file.list();if(nameList!=null){for (String s : nameList) {System.out.println(s);}}//        assert nameList!=null;
//        for (String s : nameList) {
//            System.out.println(s);
//        }//public File[] listFiles() 将目录下所有的文件以及文件夹都封装成一个一个的File对象放到一个数组中File[] files = file.listFiles();if(files!=null){for (File file1 : files) {System.out.println(file1);}}}
}

例题
需求:获取ketang目录下所有.txt后缀的文件
1、先获取所有文件,在筛选出以.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)
public File[] listFiles(FilenameFilter filter)

2、筛选出以.txt结尾的文件文件,添加到数组中

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() {@Overridepublic boolean accept(File dir, String name) {// 当这里返回true的时候,表示将文件放到数组中// dir表示当前目录,name表示文件或者文件夹名字File f = new File(dir, name);return f.isFile() && f.getName().endsWith(".txt");}});
//       使用lambda表达式//        File[] files = file.listFiles((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);}}}
}

五、throws

throws: 抛出
在方法的定义上抛出异常类, throws本身是不会处理异常的,只是当时方法内部不用处理了,
但是当调用者调用有问题的方法时,需要调用者进行处理throw: 抛出
在方法内部抛出异常对象,表示一个确定的异常注意:当调用者调用抛出运行时期异常的方法时,可以选择不去处理,也能运行。当调用者调用抛出编译时期异常的方法是,必须要进行处理,否则编译不通过无法运行。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/817026.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计量经济学(十一)——联立方程模型的估计

img { display: block; margin-left: auto; margin-right: auto } table { margin-left: auto; margin-right: auto } 联立方程模型(Simultaneous Equations Model, SEM)是一类包含多个相互依赖变量的统计模型,用来描述这些变量之间的相互关系。在传统的单一方程模型中,通常…

数据结构与算法 课程随记

数据结构与算法 课程随记因为有时候需要在不同设备编辑同一份文档,本地不太方便了,先在放着博客园比较省事吧。 但是博客园是不是快要四了啊,没事再整一个个人博客吧。 Class https://www.runoob.com/cplusplus/cpp-classes-objects.html大纲 定义成员函数,(无论public/pri…

pve安装后删除local-lvm并把其空间全部分给local

在安装pve的时候,系统默认分配给local的空间非常小,我们可以通过以下方法把local-lvm删除,并将其空间还给local。 在webui的pve节点的磁盘选项中找到LVM-Thin,删除data卷。删除后此处为空。 接着打开终端执行以下命令: lvresize --extents +100%FREE --resizefs pve/root此…

PYNQ Z2 读取xadc外部通道电压

使用XADC 或者JTAG只能读取XADC的内部电压, 而无法读取外部通道的电压 现在使用xsysmon.h库里面的函数进行XADC外部通道的电压 为了方便观察,增加了PL GPIO KEY LED进行观察 1. 配置ZYNQ70002.添加两个axi gpio并进行配置 AXI GPIO0AXI GPIO13. 添加XADC进行配置 这里选择axi l…

10.18 模拟赛

炼石计划 10 月 04 日 NOIP 模拟赛 #8【补题】 - 比赛 - 梦熊联盟 (mna.wang) 复盘 T1 有种 div.2 B 的风格,没秒,想看题。 T2。只判是否无解?\(k \le 100\)?把 \(200\) 个关键连通块拿出来建图跑传递闭包不就做完了。 一遍过大样例?简直不可思议,但还是把 T2 关了吧。 用…

小心!这样分享 B 站视频会暴露身份

已经有被开盒的案例了。‍ 在 2022 年 6 月 10 日 0 点,B 站在视频的网址上加了个参数 ?vd_source=XXXXXXXXXXXXXXX​,如图: ​ 经过网友的测试,这个参数值很可能就是用户 ID 的 hash 值(简单来说就是用户身份),所以如果直接复制网址的话,是有可能被“开盒”的。 ‍ 其…

局部静态变量的初始化观测

局部静态变量的初始化观测//全局变量int global=0x11111;int main(int argc, char* argv[]){ //局部变量 int temp=0x160; global=global+temp; return 0;}6: int global=0x111111;7: int main(int argc, char* argv[])8: {00401010 push …

想玩Steam游戏,但配置太低?ToDesk云电脑一招搞定!

在游戏爱好者的世界里,汇集了许多游戏大作的Steam平台无疑是一座宝库。但对于许多玩家来说,拥有一颗渴望畅玩游戏的心,却常常被低配置的电脑设备所束缚。尤其是面对硬件要求极高的3A大作时,低配置的电脑往往力不从心,卡顿、掉帧等问题让人苦恼不已。但别担心!小编最近发现…

孩子对手机有了渴望,家长该如何应对?ToDesk远程防沉迷

在现代生活中,手机已经成为我们密不可分的生活工具,日常工作社交生活都要靠手机来完成。 但近年来,手机的各类视频游戏等app诱惑在不断加大,导致孩子总是抱着手机不放,家长对此类问题头疼不已。 ToDesk远程控制软件可以另辟蹊径用远程控制软件解决掉孩子手机沉迷问题,只需…

vscode中整合豆包MarsCode编程助手

豆包MarsCode是字节跳动旗下的一款AI工具,最近在刷帖子时看到已经可以在vscode中通过插件安装MarsCode工具,接下来我们来看下操作流程以及使用效果。 第一步:首先需要注册下豆包账号 豆包 MarsCode--智能编码,一触即发! 第二步:打开vscode 后,左侧导航栏上点击扩展,搜索…

E-拼接串

题目: 思路:在已有的数组中寻找符合条件,也就是没有重复数字的子数组,以掩码的对应位的形式来表示当前子数组元素的存在,之后双重循环生成所有子数组,内层循环中,判断当前元素是否存在掩码中,存在则推出,不存在则加入掩码并标记。用另一个循环来更新 sum 数组,使得每…

低空经济如何实现商业化

随着技术的进步和政策的支持,低空经济正逐渐成为推动经济发展的新引擎。低空经济,主要指利用低空空域资源,通过有人驾驶和无人驾驶航空器的低空飞行活动,带动相关领域融合发展的综合性经济形态。当前,低空经济的商业化正面临前所未有的机遇与挑战。 技术突破是基础技术是推…