24/04/24总结

 异常:

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.txtString 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);//mkdirFile 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)+' ');

 

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

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

相关文章

Linux下的UDEV机制/守护进程

一. Udev机制概念引入 ( 需要在 etc/udev/rules.d/ 下创建设备的相关规则&#xff0c;不然有可能udev机制生成的设备文件不具备可读可写的权限&#xff0c;adb无法成功通过该设备文件访问设备 ) a. 创建文件夹 sudo vim Xiaomi-audroid.rules b. 添加规则 …

HttpMessageConverter

一、HttpMessageConverter HttpMessageConverter是Spring MVC中非常重要的一个接口。翻译为&#xff1a;HTTP消息转换器。该接口下提供了很多实现类&#xff0c;不同的实现类有不同的转换方式。 1.1 什么是HTTP消息 HTTP消息其实就是HTTP协议。HTTP协议包括请求协议和响应协议。…

CentOS 系统的优缺点

CentOS &#xff08;社区企业操作系统的缩写&#xff09;是一个基于红帽企业 Linux (RHEL)的免费开源发行版&#xff0c; 旨在为服务器和工作站提供稳定、可靠和安全的平台。 不应将其与CentOS Stream 混淆&#xff0c;后者是即将发布的 RHEL 版本的上游开发平台。 CentOS Li…

webpack中mode、NODE_ENV、DefinePlugin、cross-env的使用

本文讲的全部知识点&#xff0c;都是和webpack相关的。如果你之前有疑问&#xff0c;那本文一定能帮你搞清楚。 问题来源一般是类似下面代码&#xff08;webpack.json中&#xff09;&#xff1a; "scripts": {"dev": "cross-env NODE_ENVdevelopmen…

提升你的C编程技能:使用cURL下载Kwai视频

概述 本文将介绍如何利用C语言以及cURL库来实现Kwai视频的下载。cURL作为一个功能强大的网络传输工具&#xff0c;能够在C语言环境下轻松地实现数据的传输。我们还将探讨如何运用代理IP技术&#xff0c;提升爬虫的匿名性和效率&#xff0c;以适应Kwai视频平台的发展趋势。 正…

探索设计模式的魅力:主从模式与AI大模型的结合-开启机器学习新纪元

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索主从模式与AI大模型之旅✨ &#x1f31f;Hey, tech enthusiasts! 你是否还在追…

parallels desktop19.3最新版本软件新功能详细介绍

Parallels Desktop是一款运行在Mac电脑上的虚拟机软件&#xff0c;它允许用户在Mac系统上同时运行多个操作系统&#xff0c;比如Windows、Linux等。通过这款软件&#xff0c;Mac用户可以轻松地在同一台电脑上体验不同操作系统的功能和应用程序&#xff0c;而无需额外的硬件设备…

codeforce#933 题解

E. Rudolf and k Bridges 题意不讲了&#xff0c;不如去题干看图。 传统dp&#xff0c;每个点有两个选择&#xff0c;那么建桥要么不建。需要注意的是在状态转移的时候&#xff0c;桥是有长度的&#xff0c;如果不建需要前d格中建桥花费最少的位置作为状态转移的初态。 #incl…

【前后端】django与vue的结合使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、前后端分离的简介二、django与vue的结合使用三、总结 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人会主动学习使用一些开发工具&a…

的记忆:pandas(实在会忘记,就看作是一个 Excel 表格,或者是 SQL 表,或者是字典的字典。)

pandas 是一个开源的 Python 数据分析库&#xff0c;它提供了快速、灵活和富有表现力的数据结构&#xff0c;旨在使“关系”或“标记”数据的“快速分析、清洗和转换”变得既简单又直观。pandas 非常适合于数据清洗和转换、数据分析和建模等任务。以下是 pandas 的基本概念和主…

多商家AI智能名片商城系统(开源版)——构建高效数字化商业新生态

一、项目概述 1、项目背景 1&#xff09;起源 随着数字化时代的快速发展&#xff0c;传统名片和商城系统已经难以满足企业日益增长的需求。商家需要更高效、更智能的方式来展示自己的产品和服务&#xff0c;与消费者进行互动和交易。同时&#xff0c;开源技术的普及也为开发…

ZYNQ--PL读写PS端DDR数据

PL 和PS的高效交互是zynq 7000 soc开发的重中之重&#xff0c;我们常常需要将PL端的大量数 据实时送到PS端处理&#xff0c;或者将PS端处理结果实时送到PL端处理&#xff0c;常规我们会想到使用DMA 的方式来进行&#xff0c;但是各种协议非常麻烦&#xff0c;灵活性也比较差&am…