方法引用 异常 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>() {
            @Override
            public 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());

        //lambda
        List<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中的匿名内部类看出

 @Override
          public 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));

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

二、异常

1.异常的作用

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

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

2.异常的处理方式

i.JVM默认的处理方式

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

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

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

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

注意:如果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.mfbz.cn/a/776842.html

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

相关文章

算法金 | 平均数、众数、中位数、极差、方差,标准差、频数、频率 一“统”江湖

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 抱个拳&#xff0c;送个礼 更多内容&#xff0c;见微*公号往期文章&#xff0c;阅读人数已破 10, 000&#xff1a;协方差、方差、标准…

vue3自定义全局指令和局部指令

1.全局指令 el&#xff1a;指令绑定到的DOM元素&#xff0c;可以用于直接操作当前元素&#xff0c;默认传入钩子的就是el参数&#xff0c;例如我们开始实现的focus指令&#xff0c;就是直接操作的元素DOM binding&#xff1a;这是一个对象&#xff0c;包含以下属性&#xff1a;…

vue项目打包部署后 浏览器自动清除缓存问题(解决方法)

vue打包部署后 浏览器缓存问题&#xff0c;导致控制台报错ChunkLoadError: Loading chunk failed的解决方案 一、报错如下&#xff1a; 每次build打包部署到服务器上时&#xff0c;偶尔会出现前端资源文件不能及时更新到最新&#xff0c;浏览器存在缓存问题&#xff0c;这时在…

怎么做外贸推广:10个详细教程和工具

1. 介绍 1.1 什么是外贸推广 外贸推广指的是将产品或服务推广到国际市场的过程。它的主要目的是吸引海外客户&#xff0c;增加销售额&#xff0c;并扩大企业的全球影响力。外贸推广不仅仅是销售产品&#xff0c;它还包括品牌建设、市场研究和客户关系管理。 谷歌外贸推广案例…

WPF 实现 移动带/旋转带 效果

先来看看效果&#xff1a; 接下来说明下实现步骤&#xff1a; 1.定义个背景 <Grid Background"#ffffff"><Border Background"#7f8b99" /></Grid> 2.定义平行四边形 定义一个 宽40 高21的 四边形。然后定义四个点的起始位置 Points …

el-table实现固定列,及解决固定列导致部分滚动条无法拖动的问题

一、el-table实现固定列 当数据量动态变化时&#xff0c;可以为 Table 设置一个最大高度。 通过设置max-height属性为 Table 指定最大高度。此时若表格所需的高度大于最大高度&#xff0c;则会显示一个滚动条。 <div class"zn-filter-table"><!-- 表格--…

zdppy+vue3+antd 实现表格数据渲染

基本用法 <template><a-table :columns"columns" :data-source"data"><template #headerCell"{ column }"><template v-if"column.key name"><span>xxx Name</span></template></temp…

2024年中国陶瓷轴承用氮化硅粉体市场发展现状及重点竞争企业研究

2024年中国陶瓷轴承用氮化硅粉体市场发展现状及重点竞争企业研究 氮化硅是一种硬度高、结构稳定、热膨胀系数小&#xff0c;抗氧化和抗侵蚀性能好的一种的陶瓷材料&#xff0c;可用于制造高性能氮化硅陶瓷结构件、坩埚涂层等。近年来&#xff0c;伴随着机械制造行业进一步向高精…

Google重大更新--解读Android Auto认证4.3

Google在今年五月更新了Android Auto 4.2.2版本&#xff0c;而在2024年7月他们推出了Android Auto 4.3版本&#xff0c;这是自2023年9月以来对Android Auto 4.2版本的一次重大更新。 为了确保合规性和顺利认证&#xff0c;OEM和Tire1必须确保PDK组件版本与正在认证的主机的Rece…

昇思25天学习打卡营第18天 | 基于MobileNetv2的垃圾分类

内容介绍&#xff1a; MobileNet网络是由Google团队于2017年提出的专注于移动端、嵌入式或IoT设备的轻量级CNN网络&#xff0c;相比于传统的卷积神经网络&#xff0c;MobileNet网络使用深度可分离卷积&#xff08;Depthwise Separable Convolution&#xff09;的思想在准确率小…

Shopee(虾皮)怎么获取流量?

店铺流量的高低会直接关联到卖家店铺单量&#xff0c;也关系到一个店铺的营业情况和利润&#xff0c;那么Shopee的流量从哪里来呢&#xff1f; Shopee的平台流量可分为五个部分&#xff1a; 1.自然流量 2.关键字广告流量 3.平台活动流量 4.营销流量 5.粉丝流量 怎么提升…

nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)

首先&#xff0c;发现很多解读文章对核心点讲解的很多&#xff0c;但是我感觉没讲全&#xff0c;记录下&#xff0c;我自己看源码时候一些心得 1. 读源码第一步&#xff0c;先去github, issue, 官网&#xff1a; 1.1 github : https://github.com/alibaba/…

数据挖掘与分析——深度学习算法应用

1. TensorFlow框架的基本使用&#xff08;5-1&#xff09; 获取训练数据 构建一个简单的线性模型&#xff1a;W&#xff0c;b为参数&#xff0c;W2&#xff0c;b1&#xff0c;运用tf.random.normal() 产生1000个随机数&#xff0c;产生x,y数据。 用matplotlib库&#xff0c;…

android iconfont带图标的图文并茂的一种实现

android实现图文并茂方法很多。 这里针对&#xff0c;仅本地图标&#xff0c;需要对齐&#xff0c;任意位置&#xff0c;兼容换行导致后面空白的问题做的一种方案。 www.iconfont.cn&#xff0c;注册&#xff1b; 上传svg的icon&#xff1b; 下载项目得到iconfont.ttf&#xf…

文献阅读:通过高通量原位成对测序实现亚细胞分辨率的空间多组学

文献介绍 文献题目&#xff1a; Spatial multi-omics at subcellular resolution via high-throughput in situ pairwise sequencing 研究团队&#xff1a; 曹罡&#xff08;深圳理工大学&#xff09;、戴金霞&#xff08;华中农业大学&#xff09; 发表时间&#xff1a; 2024…

Nginx-http_limit_req_module模块

文章目录 前言一、ngx_http_limit_req_module模块二、指令1.limit_req_zone2.limit_req3.limit_req_log_level4.limit_req_status 实验burst取默认0的情况burst不取默认值 总结 前言 如何限制每个客户端每秒处理请求数 一、ngx_http_limit_req_module模块 生效阶段&#xff1…

node.js外卖小程序-计算机毕业设计源码81838

摘要 自从计算机发展开始&#xff0c;计算机软硬件相关技术的发展速度越来越快&#xff0c;在信息化高速发展的今天&#xff0c;计算机应用技术似乎已经应用到了各个领域。在餐饮行业&#xff0c;除了外卖以外就是到店里就餐&#xff0c;在店里就餐如果需要等待点餐的话&…

Vue的民族民俗文化分享平台-计算机毕业设计源码22552

基于Vue的民族民俗文化分享平台设计与实现 摘 要 本文介绍了一种基于Vue.js前端框架和Express后端框架的民族民俗文化分享平台的设计和实现。该平台旨在通过线上方式&#xff0c;促进民族民俗文化的传播与分享&#xff0c;增强公众对多元文化的了解和认同。 平台为普通用户提供…

谷粒商城学习笔记-14-项目结构创建提交到码云

一&#xff0c;码云上创建工程仓库 1&#xff0c;,点击右上角加号&#xff0c;选择新建仓库 2&#xff0c;填充必要信息 ①仓库名称&#xff0c;可以理解为工程名称。 ②仓库介绍&#xff0c;添加关于仓库的说明。 ③仓库权限设置&#xff0c;如果是公司项目&#xff0c;一般…