当前位置: 首页 > news >正文

方法引用 异常 file

目录

一.方法引用

1.方法引用概述

2.引用静态方法

3.引用成员方法

i.引用其他成员方法 

ii.引用本类成员方法

iii.引用父类成员方法

4.引用构造方法 

5.其他调用方式

i.使用类名引用成员方法

ii.引用数组的构造方法

二、异常

1.异常的作用

2.异常的处理方式

i.JVM默认的处理方式

ii.自己处理(捕获异常)

iii.抛出异常

iiii.异常中的常用方法

三、File

1.File的构造方法

2.File的成员方法


一.方法引用

1.方法引用概述

eg:

表示引用run1类里面的sxxxx方法

把这个方法当做抽象方法的方法体

::是方法引用符

     //方法引用Integer[] arr={4,3,1,6,2,7,8,5};Arrays.sort(arr,run1::subtraction);System.out.println(Arrays.toString(arr));}public static int subtraction(int num1,int num2){return num2-num1;}}

2.引用静态方法

1.方法需要已经存在
2.方法的形参和返回值需要跟抽象方法的形参和返回值保持一致

3.方法的功能需要把形参的字符串转换成整数

eg:

    ArrayList<String> list10 = new ArrayList<>();Collections.addAll(list10, "1","4","3","2","6");list10.stream().map(Integer::parseInt).forEach(s->System.out.println(s));

3.引用成员方法

格式:对象::成员方法

1.其他类:其他类对象::方法名

2.本类:this::方法名(引用出处不能是父类方法)

3.父类:super::方法名

i.引用其他成员方法 

1.eg

public class run2 {public static void main(String[] args) {ArrayList<String> list1=new ArrayList<>();Collections.addAll(list1,"张ad","刘df","张ty","周kdh","fjd");list1.stream().filter(new fangfa2()::findzhnag).forEach(s -> System.out.println(s));}}//***************************public class fangfa2 {public boolean findzhnag(String s){return s.startsWith("张")&&s.length()==3;}
}

ii.引用本类成员方法

2.eg:静态方法中是没有this的


public class run2 {public static void main(String[] args) {ArrayList<String> list1=new ArrayList<>();Collections.addAll(list1,"张ad","刘df","张ty","周kdh","fjd");list1.stream().filter(new run2()::findzhnag).forEach(s -> System.out.println(s));}public boolean findzhnag(String s){return s.startsWith("张")&&s.length()==3;}
}

iii.引用父类成员方法

4.引用构造方法 

格式 :类名::new

范例:Student::new

eg1:

//匿名内部类    List<Student> newlist1 = list1.stream().map(new Function<String, Student>() {@Overridepublic Student apply(String s) {String[] arr = s.split(",");String name = arr[0];int age = Integer.parseInt(arr[1]);return new Student(name, age);}}).collect(Collectors.toList());//lambdaList<Student> new2list1 = list1.stream().map(s -> new Student(s.split(",")[0], Integer.parseInt(s.split(",")[1]))).collect(Collectors.toList());

e:2:

     //引用构造方法List<Student> new3list1 = list1.stream().map(Student::new).collect(Collectors.toList());System.out.println(new3list1);//其中Strudent这个类里面要加上public Student(String str) {String[] arr = str.split(",");this.name = arr[0];this.age = Integer.parseInt(arr[1]);}

为什么要加:因为被引用的方法的形参和返回值,需要跟抽象方法的形参返回值保持一致

从eg1中的匿名内部类看出

 @Overridepublic Student apply(String s) {

是有一个String s的,所以这时需要再Student类中构造一个

public Student(String str) {

函数,str表示流里面的数据

5.其他调用方式

i.使用类名引用成员方法

格式:类名::成员方法

范例:String::substring

练习 :集合里面一些字符串,要求变成大写后进行输出

eg:

      ArrayList<String> list2=new ArrayList<>();Collections.addAll(list2,"aaa","bbb","ccc","ddd");list2.stream().map(String::toUpperCase).forEach(s -> System.out.println(s));

意思是:第一个参数是什么类,就可以直接引用这个类里面跟后面参数跟抽象方法一样的成员方法。这也就是为什么形参不一致也可以,一个有一个形参一个无形参。就是没有第二个参数,说明引用方法是无参的

局限性:1.不能阴影所有类中的成员方法。2.是跟抽象方法的第一个参数有关,这个参数是什么类型的,那么就只能应用这个类中的方法。

ii.引用数组的构造方法

格式:数据类型[ ]::new

范例:int[ ]::new

练习:集合中存储一些整数,收集到数组当中

 ArrayList<Integer> list3=new ArrayList<>();Collections.addAll(list3,1,2,3,4);Integer[] arr = list3.stream().toArray(Integer[]::new);System.out.println(Arrays.toString(arr));
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

细节:数组的类型需要和流中的数据类型保持一致

二、异常

1.异常的作用

异常作用一:异常是用来查询bug的关键参考信息

异常作用二:异常可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况

2.异常的处理方式

i.JVM默认的处理方式

把异常名称,原因及位置等信息输出在了控制台,程序停止,异常下面的不会再执行

ii.自己处理(捕获异常)

 try{//可能出现异常的代码}catch(异常类名 变量名){//异常的处理代码}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

目的:当代码出现异常时,可以让程序继续往下执行

注意:如果try中没有遇到问题,会吧try里面的全部执行完毕不会执行catch里面的代码,只有出现异常才会执行catch

注意:如果try里面有多个异常,要写多个catch与之对应,细节:如果要捕获多个异常,这些异常如果存在父子关系的话,那么父类一定要写在下面

注意:如果try中遇到的问题没有被捕获,相当于try....catch的代码白写了,最终还是会交给虚拟机处理(默认处理方式)

注意:try中遇到了问题,那么try下面的其他代码不会执行,直接跳转到相对应的catch,如果没有相对应的catch与之匹配,则交给虚拟机处理

iii.抛出异常

iiii.异常中的常用方法

Throwable的成员方法

//快捷键生成,ctrl alt+t

三、File

1.File的构造方法

2.File的成员方法

http://www.lryc.cn/news/395695.html

相关文章:

  • 比较(六)利用python绘制径向柱图
  • 为什么需要重写equals和如何重写equals
  • C#字符串操作:判断一个字符串是否存在于另一个字符串按特定字符分割后的子字符串中的几种方法
  • Hi3861 OpenHarmony嵌入式应用入门--MQTT
  • [22] Opencv_CUDA应用之 使用背景相减法进行对象跟踪
  • Maven在Windows中的配置方法
  • 一、redis-万字长文读懂redis
  • 搞清楚[继承],易如反掌
  • Perl 语言入门学习指南:探索高效脚本编程的奥秘
  • 【HTML】-解决页面内容无法选择、复制问题
  • C#中委托与事件
  • 通用后台管理(二)——项目搭建
  • 多模态大模型之达摩院通义MPLUG
  • 文章翻译记录
  • C++ 语法习题(2)
  • 使用Gstreamer时遇到WARNING: erroneous pipeline: no element “x264enc“(亲测有效)
  • SAP 新增移动类型简介
  • SQL性能优化策略
  • 代码随想录第四十八天 | 198.打家劫舍, 213.打家劫舍II,337.打家劫舍III
  • C#实用的工具类库
  • 首席数据官CDO证书报考指南:方式、流程、适考人群与考试难度
  • 数据库基础复习
  • 探索AI大模型(LLM)减少幻觉的三种策略
  • 【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十三章 Linux连接档
  • 鸿蒙语言基础类库:【@ohos.uri (URI字符串解析)】
  • JavaScript---new Map()用法
  • 【数据基础】— 基于Go1.19的站点模板爬虫的实现
  • Angular进阶之九: JS code coverage是如何运作的
  • el-table 鼠标移入更改悬停背景颜色
  • 【《无主之地3》风格角色渲染在Unity URP下的实现_角色渲染(第四篇) 】