24/04/09总结

异常:

1.异常是什么?
程序中可能出现的问题
2.异常体系的最上层父类是谁?异常分为几类?
父类:Exception。
异常分为两类:编译时异常、运行时异常
编译时异常和运行时异常的区别?
编译时异常:没有继承RuntimeException的异常,直接继承于Exception。
编译阶段就会错误提示
运行时异常:RuntimeException本身和子类,
编译阶段没有错误提示,运行时出现的

 

自己处理(捕获异常)
格式:               ctrl+alt+t选择try catch
try{
可能出现异常的代码;
}
catch(异常类名 变量名){
异常的处理代码:
}
目的:当代码出现异常时,可以让程序继续往下执行
细节:如果我们要捕获多个异常,这些异常中如果存在父子关系的话,那么父类一定要写在下面
Throwable 的成员方法
方法名称                              //说明
public String getMessage()           返回此 throwable 的详细消息字符串
public string toString()             返回此可抛出的简短描述
public void printStackTrace()        把异常的错误信息以红色字体输出在控制台(仅仅是打印信息不会停止程序运行)
抛出处理
throws
注意:写在方法定义处,表示声明一个异常
告诉调用者,使用本方法可能会有哪些异常
public void 方法()throws 异常类名1,异常类名2...{
....
}
编译时异常:必须要写,
运行时异常:可以不写
throw
注意:写在方法内,结束方法
手动抛出异常对象,交给调用者
方法中下面的代码不再执行了
public void 方法(){
throw new NullPointerException();
}
简单来说抛出和捕获的区别是:抛出:告诉调用者出错了,捕获:不让程序停止

 

File: 

File对象就表示一个路径,可以是文件的路径、也可以是文件夹的路径
这个路径可以是存在的,也允许是不存在的
方法名称                                                               说明
public File(String pathname)                          根据文件路径创建文件对象
public File(String parent,string child)               根据父路径名字符串和子路径名字符串创建文件对象
public File(File parent,string child)                 根据父路径对应文件对象和子路径名字符串创建文件对象

 

 //1.根据字符串表示的路径,变成File对象
        String str="C:\\Users\\35303\\Desktop\\a.txt";
        File f1 = new File(str);
        System.out.println(f1); //C:\Users\35303\Desktop\a.txt";
//2.父级路径:C:\Users\35303\Desktop
        //子级路径:a.txt
        String parent = "C:\\Users\\35303\\Desktop";
        String child = "a.txt";
        File f2 = new File(parent,child);
        System.out.println(f2);
  //3.把一个File表示的路径和String表示的路径进行拼接
        File parent2 = new File("C:\\Users\\35303\\Desktop");
        String child2 = "a.txt";
        File f3 = new File(parent2,child2);
        System.out.println(f3);

运行结果:
 

 

public boolean isDirectory()          判断此路径名表示的File是否为文件夹
public boolean isFile()                判断此路径名表示的File是否为文件
public boolean exists()                判断此路径名表示的File是否存在
public long length()                      返回文件的大小(字节数量)
public string getAbsolutePath()           返回文件的绝对路径
public string getPath()                   返回定义文件时使用的路径
public string getName()                   返回文件的名称,带后缀
public long lastModified()                返回文件的最后修改时间(时间毫秒值)
public boolean createNewFile()            创建一个新的空的文件
public boolean mkdir()                    创建单级文件夹
public boolean mkdirs()                   创建多级文件夹
public boolean delete()                   删除文件、空文件夹(delete方法直接删除不走回收站)

 

//createNewFile()创建一个新的空的文件
        //细节1:如果当前路径表示的文件是不存在的,则创建成功,方法返回true
        //如果当前路径表示的文件是存在的,则创建失败,方法返回false
        //细节2:如果父级路径是不存在的,那么方法会有异常IOException
        //细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件
        File f1 = new File("C:\\Users\\35303\\Desktop\\a.txt");
        boolean b = f1.createNewFile();
        System.out.println(b);

        //mkdir
        File f2 = new File("C:\\Users\\35303\\Desktop\\aaa");
        boolean c = f2.mkdir();
        System.out.println(c);

输出结果:
 
桌面成功创建
 

//Delete 删除
        //细节1:
        //如果删除的是文件,则直接删除,不走回收站。
        //如果删除的是空文件夹,则直接删除,不走回收站
        //如果删除的是有内容的文件夹,则删除失败
        File f3 = new File("C:\\Users\\35303\\Desktop\\aaa");
        boolean delete = f3.delete();
        System.out.println(delete);

        File f4 = new File("C:\\Users\\35303\\Desktop\\a.txt");
        boolean delete1 = f4.delete();
        System.out.println(delete1);

 文件删除

Stream流:

stream流的作用:
结合了Lambda表达式,简化集合、数组的操作
Stream流的使用步骤:
① 先得到一条Stream流(流水线),并把数据放上去
② 利用Stream流中的API进行各种操作:
1.过滤、转换:       中间方法:方法调用完毕之后,还可以调用其他方法
2.统计、打印:       终结方法:最后一步,调用完毕之后,不能调用其他方法

 

获取方式                  方法名                                                               说明
单列集合                  default Stream<E> stream()                                 Co1lection中的默认方法
双列集合                                  无                                                             无法直接使用stream流
数组                      public static<T>stream<T> stream(T[] array)         Arrays工具类中的静态方法
一堆零散数据               public static<T>stream<T> of(T... values)          stream接口中的静态方法

 

  //1.单列集合获取stream流
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"a","b","c","d","e");       //给集合添加数据
       list.stream().forEach(s -> System.out.println(s));   //lambda表达式
        System.out.println("-------");

 

 //2.数组获取stream流
        int []arr = new int[]{1,2,3,4,5,6,7,8,9,10};
        String []arr1 = new String[]{"a","b","c"};
        Arrays.stream(arr).forEach(s-> System.out.println(s));
        Arrays.stream(arr1).forEach(s-> System.out.println(s));
        System.out.println("-------");

 

 //3.一堆零散的数据(前提:必须是同一种数据类型)
        Stream.of(1,2,3,4,5).forEach(s-> System.out.println(s));
        Stream.of("a","b","c","d").forEach(s-> System.out.println(s));

 

Stream流的中间方法
名称                                                              说明
Stream<T>filter(Predicate<? super T> predicate)                   过滤
Stream<T> limit(long maxSize)                                     获取前几个元素
Stream<T> skip(long n)                                            跳过前几个元素
Stream<T> distinct()                                              元素去重,依赖(hashcode和equals方法)
static <T> Stream<T> concat(Stream a, Stream b)                   合并a和b两个流为一个流
Stream<R>map(Function<T,R> mapper)                                转换流中的数据类型
注意1:中间方法,返回新的Stream流,原来的Stream流只能使用一次,建议使用链式编程
注意2:修改Strgam流中的数据,不会影响原来集合或者数组中的数据
 ArrayList<String>list = new ArrayList<>();
        Collections.addAll(list,"张无忌","周芷若","赵敏","张强","张三丰","张翠山","张良","王二麻子","谢广坤");
        //filter    过滤      把张开头的留下,其余数据过滤不要(只要张开头,且名字为3个的)
        list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length()==3).forEach(s -> System.out.println(s));
        System.out.println(list);   //这个时候集合里的值是没有变化的
        System.out.println("1--------");
        

 

//limit 获取前几个元素     skip 跳过前几个元素
        list.stream().limit(3).forEach(s -> System.out.print(s+' '));
        System.out.println();
        list.stream().skip(4).forEach(s -> System.out.print(s+' '));
        System.out.println();
        System.out.println("2--------");

 

 //distinct 去重
        ArrayList<String>list2 = new ArrayList<>();
        Collections.addAll(list2,"张无忌","张无忌","张无忌","张无忌","周芷若","赵敏","张强","张三丰","张翠山","张良","王二麻子","谢广坤");
        list2.stream().distinct().forEach(s -> System.out.print(s+' '));
        System.out.println();
        System.out.println("3--------");

//concat 合并两个流为一个流
        ArrayList<String>list3 = new ArrayList<>();
        Collections.addAll(list3,"shiaf","faefwafa");
        Stream.concat(list2.stream(),list3.stream()).forEach(s -> System.out.print(s+' '));
        System.out.println();
        System.out.println("4--------");

        //map:转换数据类型
        ArrayList<String>list4 = new ArrayList<>();
        Collections.addAll(list4,"张无忌-15","周芷若-14","赵敏-20","张强-18","张三丰-12","张翠山-20","张良-21");
        //Integer.parseInt()将字符串转换为10进制
        //split:根据里面的东西切割数据分配索引
        list4.stream().map(s -> Integer.parseInt(s.split("-")[1])).forEach(s-> System.out.print(s+" "));

 

Stream流的终结方法
名称                                                                  说明
void forEach(Consumer action)                 遍历
long count()                                                  统计
toArray()                                                 收集流中的数据,放到数组中
collect(Collector collector)                  收集流中的数据,放到集合中
 
 //forEach 遍历
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"张无忌","周芷若","赵敏","张强","张三丰","张翠山","张良","王二麻子","谢广坤");
        list.stream().forEach(s -> System.out.print(s+' '));
        System.out.println();
        System.out.println("--------------------");

        //count 统计元素数量
        long count1 = list.stream().count();
        System.out.println(count1);
        System.out.println("--------------------");

        //toArray() 收集流中的数据,放到数组中
        String[] strings = list.stream().toArray(value -> new String[value]);
        System.out.print(Arrays.toString(strings)+' ');

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里面试题二

实在是太长了 重新开一篇吧 dubbo 服务暴露 Dubbo——服务调用、服务暴露、服务引用过程 - 简书 这两篇文章写的是极好 我现在查得资源强的可怕朋友们 服务降级 MockClusterInvoker 负载均衡策略 容错机制在哪里实现的源码 通信 NIO、BIO区别&#xff0c;NIO解决了什么…

[C语言]——柔性数组

目录 一.柔性数组的特点 二.柔性数组的使用 三.柔性数组的优势 C99中&#xff0c;结构体中的最后⼀个元素允许是未知大小的数组&#xff0c;这就叫做『柔性数组』成员。 typedef struct st_type //typedef可以不写 { int i;int a[0];//柔性数组成员 }type_a; 有些编译器会…

jmeter压测websocket协议

一、jmeter 安装websocket插件 1、选项--插件管理 2、搜索WebSocket Samplers by Peter Doornbosch插件 进行安装 3、 重启 jmeter 二、jmeter压测websocket协议实战 2.1、以网站为例&#xff1a; websocket在线测试 1、断开连接 2、打开F12&#xff0c;查看WS数据 3、…

下班后开始更新进行做什么内容

今天没有完成的内容有哪些 作用插槽 没有完成 开始学习一下一个工具如何 学习一个kail 兼职挖漏洞的方式 先来安装一个windows镜像内容 安装成功了

蓝桥杯-阿坤老师的魔方挑战

图示: 代码: #include <iostream> using namespace std; int main() {int N,i,j,row,col,sum,max0;cin>>N;int ar[N][N];for(i0;i<N;i){for(j0;j<N;j){cin>>ar[i][j];}//输入矩阵 }for(i0;i<N;i){row0;coli;sum0;//重新初始化while(row<N){if(c…

基于Java+SpringBoot+vue3+uniapp口红销售/商城管理系统设计与实现

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

C++11:function包装器

包装器&#xff0c;体现了C11中的封装性&#xff0c;包装器可以应用于&#xff1a;函数指针&#xff0c;仿函数&#xff0c;lambda 而包装器function的出现刚好也弥补了上述三种语法的不足之处 函数指针写起来较为复杂&#xff0c;而仿函数之间类型不同&#xff0c;lambda则在…

【粉丝福利社】区块链与金融科技(文末送书-完结)

&#x1f3c6; 作者简介&#xff0c;愚公搬代码 &#x1f3c6;《头衔》&#xff1a;华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xf…

nexus设置s3存储

问题 因为我的nexus是安装在EC2上面&#xff0c;需要利用s3的存储能力&#xff0c;为nexus提供存储服务。 步骤 准备s3桶 输入桶名&#xff0c;创建s3桶&#xff0c;如下图&#xff1a; 创建桶读写策略 具体内容如下&#xff1a; {"Version": "2012-10-1…

施耐德 Quantum PLC 屏幕待机显示的信息

中文手册记录不全&#xff0c;中文手册只有非冗余型号的显示信息&#xff0c;没有冗余型号的显示信息&#xff0c;太&#xff01;坑&#xff01;爹&#xff01;了&#xff01; 得看英文的手册&#xff1a;https://www.mroelectric.com/static/app/product/pdfs/140CPU65260.pdf…

Ubuntu20.04安装和编译运行lidar_align来联合标定lidar与imu的外参

硬件&#xff1a;树霉派4b 1、下载并安装lidar_align mkdir -p lidar_align/src cd lidar_align/src git clone https://github.com/ethz-asl/lidar_align.git 将 lidar_align/src/lidar_align/NLOPTConfig.cmake 文件移动到 lidar_align/src/ 下(与lidar_align同级) NLOP…

业主看完当场签约的神仙地产大屏,搞物业的你不来get同款么

各行各业都有可视化大屏的应用场景&#xff0c;不少同志曾私戳我&#xff1a;能不能给我XX行业的大屏示例哇&#xff0c;我展示的指标领导怎么都不满意哇&#xff01; 于是俺在行业顾问大哥那苦苦哀求&#xff0c;终于给大家带来这个地产行业的“营销战图大屏”方案&#xff0…

靶机渗透Lampiao

寻找靶机 主机ip&#xff1a;192.168.87.134 扫描端口 靶机位置为&#xff1a;192.168.87.140 扫描端口 得到三个端口22,80,1898 信息搜集 访问网站 162.168.87.140:80 一点没用 162.168.87.140:1898 有文字框可以考虑sql注入等等 同时点击图片发现url 中有个node可以…

Linux网络名称空间之独立网络资源管理

Linux网络名称空间是一种强大的虚拟化技术&#x1f6e0;️&#xff0c;它允许用户创建隔离的网络环境&#x1f310;&#xff0c;每个环境拥有独立的网络资源和配置。这项技术对于云计算☁️、容器化应用&#x1f4e6;和网络安全&#x1f512;等领域至关重要。本文将详细介绍在L…

产品推荐 | 基于Intel(Altera)Arria 10 10AS027/048打造的水星Mercury+ AA1核心板

01 产品概述 水星Mercury AA1片上系统&#xff08;SoC&#xff09;核心板通过结合基于ARM处理器的SoC FPGA、快速DDR4 ECC SDRAM、eMMC flash、QSPI flash、Gigabit Ethernet PHY和RTC形成了一个高性能嵌入式处理方案&#xff0c;结合了CPU系统的灵活性和FPGA原始的、实时的并…

电销卡呼叫必须录音吗

在现代的销售策略中&#xff0c;电话销售&#xff08;电销&#xff09;扮演着至关重要的角色。为了提高电销效率和质量&#xff0c;许多企业采用了电销卡来进行日常的电话营销活动。电销卡通常指的是专为电话销售设计的电话号码或线路&#xff0c;它们通常具备一些特殊的功能&a…

Gradle 历史-ApiHug准备-工具篇-001

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace ApiHug …

IDEA 2024.1到底更新啥有用的?

0 关键亮点 全行代码补全 Ultimate IntelliJ IDEA Ultimate 2024.1 针对 Java 全行代码补全。 这项功能由无缝集成到 IDE 中的高级深度学习模型提供支持。 它可以基于上下文分析预测和建议整行代码&#xff0c;有助于提高编码效率。 这些建议由针对不同语言和框架特别训练的专…

Leetcode-2009-使数组连续的最少操作数-c++

题目详见https://leetcode.cn/problems/minimum-number-of-operations-to-make-array-continuous/ 官方题解 几个关键点 滑动窗口的单向性由sort()保证&#xff0c;既然已经排序了就只需要单向就可以等价双向。题目中的连续和不连续这个称呼很巧妙&#xff0c;因为符合题目要…

SpringBoot整合RabbitMQ,三种交换机类型示例

SpringBoot整合RabbitMQ&#xff0c;三种交换机类型示例 1、流程概括 2、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>3、配置RabbitMQ连接 在a…