jdk8的新特征

1: jdk8中新增的方法

   在jdk8中对接口进行了增强,在jdk8之前

   interface 接口名{

   静态常量:

   抽象方法:

   }

    在jdk8之后

  interface 接口名{

  静态常量:

  抽象方法:

  默认方法:

  静态方法:

  }

  2:默认方法

   在jdk8以前只能有抽象方法和静态常量,会存在一下问题

   如果有接口进行扩展,这个接口的对应的实现类都需要重写,不利于扩展

 2.1:默认方法格式

interface 接口名:{

 修饰符 default 返回值类型  方法名:{

   方法体:

  }

}

package com.example.java8.inter;

public class Demo1Interface {
public static void main(String[] args) {
A b = new B();
System.out.println(b.test3());
A c = new C();
System.out.println(c.test3());
}
}

interface A {
void test1();

// 新增一个方法,其他实现类都需要重写不利于扩展
void test2();

// 默认方法
default String test3() {
System.out.println("接口中默认方法");
return "你好";
}
}

class B implements A {

@Override
public void test1() {

}

@Override
public void test2() {

}

@Override
public String test3() {
return "接口B重写了方法";
}
}

class C implements A {

@Override
public void test1() {

}

@Override
public void test2() {

}
}

2.2:默认方法的使用

1:实现类调用接口的默认方法

2:实现类重写接口的默认方法

3:静态方法

 3.1:静态方法格式:

interface 方法名:{

 修饰符 static 返回值类型  方法名:{

   方法体:

  }

}

package com.example.java8.inter;

public class Demo1Interface {
public static void main(String[] args) {
A b = new B();
System.out.println(b.test3());
A c = new C();
System.out.println(c.test3());
System.out.println(A.test4());
}
}

interface A {
void test1();

// 新增一个方法,其他实现类都需要重写不利于扩展
void test2();

// 默认方法
default String test3() {
System.out.println("接口中默认方法");
return "你好";
}

/**
* 静态方法
* @return
*/
static String test4(){
return "静态方法";
}
}

class B implements A {

@Override
public void test1() {

}

@Override
public void test2() {

}
@Override
public String test3() {
return "接口B重写了方法";
}
}

class C implements A {

@Override
public void test1() {

}

@Override
public void test2() {

}
}

3.2 静态方法的使用:

  静态方法不能被重写,只能通过接口类型调用:接口名.方法名

4 二者之间的区别:

 1:默认方法只能通过实现了调用,静态方法只能通过接口名调用

 2:默认方法可以被继承,实现类可以直接调用默认方法,也可以进行重写

 3:静态方法不可以被继承,实现类不可以直接调用默认方法,不可以进行重写

2: Steam Api

 2.1 集合处理数据的弊端:

当我们对集合进行操作时,除了最基本的新增,删除操作,最典型的就是遍历

package com.example.java8.stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class SteamTest01 {
public static void main(String[] args) {
// 创建一个集合
List<String> list = new ArrayList<>();
list.add("张三丰");
list.add("张无");
list.add("杨幂");
list.add("你好");
System.out.println(list);
// 获取所有姓张的数据
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
String next = iterator.next();
if (!next.startsWith("张")){
iterator.remove();
}
}
System.out.println(list);
List<String> listSize = new ArrayList<>();
// 获取名字长度为3的数据
for (String item:list){
if (item.length()>=3){
listSize.add(item);
}
}
System.out.println(listSize);
}

}

针对上面不同的需求,需要对集合进行一遍遍的遍历,如果我们想进行更高效的遍历,需要jdk8中stream特性进行操作

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

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

相关文章

linux使用/etc/hosts.deny拒绝恶意ssh到本机

一、目标 在某些特殊情况下&#xff0c;服务器有很多恶意暴力ssh破解的攻击。解决的办法有很多&#xff0c;这里用/etc/hosts.deny增加黑名单的方式来简单阻止一下。 二、前言 /etc/hosts.allow 优先于 /etc/hosts.deny。 如果在allow和deny文件中都有某个ip&#xff0c;那…

JAVA基础--IO

IO 什么是IO 任何事物提到分类都必须有一个分类的标准&#xff0c;例如人&#xff0c;按照肤色可分为&#xff1a;黄的&#xff0c;白的&#xff0c;黑的&#xff1b;按照性别可分为&#xff1a;男&#xff0c;女&#xff0c;人妖。IO流的常见分类标准是按照*流动方向*和*操作…

人形机器人的组成原理、相关技术和行业应用

人形机器人的部件和工作原理 人形机器人的部件通常包括机身、关节、传感器、驱动器、控制器等。其工作原理是通过传感器收集环境信息&#xff0c;控制器根据预设的算法和程序生成动作指令&#xff0c;驱动器驱动关节运动&#xff0c;从而实现机器人的各种动作。 人形机器人主要…

Google与哈佛大学的科学家团队共同创造了一张人脑中一个极小部分的精细地图

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

插件:Best HTTP

一、简介 WebSocket WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务端主动向客户端推送数据。在WebSocket API中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c;两者之间就直接可以创建持久性的连接&#xff0c;并进行双向数据传输。…

【SRC实战】无法支付的修改金额支付漏洞

挖个洞先 https://mp.weixin.qq.com/s/F4f8R4uKN0Q9BnTmjDMleg “ 以下漏洞均为实验靶场&#xff0c;如有雷同&#xff0c;纯属巧合 ” 01 — 漏洞证明 一、企业用户&#xff0c;标准商品 “ 支付订单需要公对公银行卡转账&#xff0c;如何绕过&#xff1f;” 1、点击任意…

bert 的MLM框架任务-梯度累积

参考&#xff1a;BEHRT/task/MLM.ipynb at ca0163faf5ec09e5b31b064b20085f6608c2b6d1 deepmedicine/BEHRT GitHub class BertConfig(Bert.modeling.BertConfig):def __init__(self, config):super(BertConfig, self).__init__(vocab_size_or_config_json_fileconfig.get(vo…

java入门-面向对象的三大特性

面向对象三大特性 封装 什么是封装 封装 是将代码及其处理的数据绑定在一起的一种编程机制&#xff0c;该机制保证了程序和数据都不受外部干扰且不被误用。 封装的作用 访问控制符 方法传参-值传递 传参类型是基本类型 程序案例&#xff1a; public static void main(St…

C++笔记(体系结构与内核分析)

1.OOP面向对象编程 vs. GP泛型编程 OOP将data和method放在一起&#xff0c;目的是通过封装、继承、多态提高软件的可维护性和可扩展性GP将data和method分开&#xff0c;可以将任何容器与任何算法结合使用&#xff0c;只要容器满足塞饭所需的迭代器类型 2.算法与仿函数的区别 …

Flutter 中的 Column 小部件:全面指南

Flutter 中的 Column 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;Column 是一个垂直布局的小部件&#xff0c;用于将子控件沿着垂直轴排列。Column 与 Row 相对&#xff0c;Row 是水平布局&#xff0c;而 Column 则是垂直布局。它非常适合用来创建列式布局&#xf…

AJAX前端与后端交互技术知识点以及案例

Promise promise对象用于表示一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值 好处&#xff1a; 逻辑更清晰了解axios函数内部运作机制成功和失败状态&#xff0c;可以关联对应处理程序能解决回调函数地狱问题 /*** 目标&#xff1a;使用Promise管理异步任…

Linux-02

Linux常用命令&#xff1a; ls: 列出目录touch: 创建文件 touch test.txt echo:往文件写内容echo "i love linux" >>test.txtcd&#xff1a;切换目录pwd&#xff1a;显示目前的目录mkdir&#xff1a;创建一个新的目录 mkdir dai:创建目录dai mkdir -p test1/t…

基于springboot的物业服务平台的设计与实现

基于springboot的物业服务平台的设计与实现 摘 要:本文针对社区物业服务管理现状,采用B/S系统架构并选择MySQL数据库作为系统的数据存储系统,设计并实现一个以Spring Boot为后端框架、Vue为前端框架的社区物业服务管理平台。与传统的物业服务管理方式相比,该系统取代了传统…

印象笔记使用技巧

印象笔记&#xff08;Evernote&#xff09;是一款广泛使用的笔记应用&#xff0c;它帮助用户整理个人信息、文件和备忘录。以下是一些提高在印象笔记中效率的使用技巧&#xff1a; ### 1. 使用标签和笔记本组织笔记 - **建立笔记本**&#xff1a;为不同的项目或类别创建笔记本…

2024-Docker常用命令大全

Docker是一个流行的开源容器化平台&#xff0c;它允许开发人员将应用程序及其依赖项打包到可移植的容器中&#xff0c;并可以轻松地发布到任何Linux机器上。以下是Docker的一些常用命令总结&#xff1a; 一、帮助与启动类命令 启动Docker&#xff1a;sudo systemctl start do…

如何查看打包后的jar包启动方法main方法

背景 有时候我们在引用一个jar包的时候,想查看一个jar包的结构,这时候查看启动类就比较重要,因为一些关键配置是在启动类上的,这里教大家如何查看这个启动类(springboot项目) 步骤 首先打开jar包预览结构,可以使用解压缩工具直接双击打开或者预览结构 打开路径 META-INF/MA…

springfox.documentation.spi.DocumentationType没有OAS_30(从swagger2转到swagger3出现的问题)

直接开讲&#xff1a; 查看源码根本没有OAS_30的类型选择 右键package的springfox找到maven下载的包&#xff0c;打开到资源管理器 可以看到项目优先使用2版本的jar包&#xff0c;但是OAS_30只在3版本中才有&#xff0c;意思就是让项目优先使用以下图片中的3.0.0jar包 解决办法…

[AutoSar]BSW_Diagnostic_004 ReadDataByIdentifier(0x22)的配置和实现

目录 关键词平台说明背景一、配置DcmDspDataInfos二、配置DcmDspDatas三、创建DcmDspDidInfos四、创建DcmDspDids五、总览六、创建一个ASWC七、mapping DCM port八、打开davinci developer&#xff0c;创建runnabl九、生成代码 关键词 嵌入式、C语言、autosar、OS、BSW、UDS、…

系统和功能测试:确保软件的功能和易用性

目录 概述 功能测试 LOSED 模型 用例的设计 等价类划分 边界值分析 循环结构测试的综合方法 因果图 决策表 功能图 正交实验设计 易用性测试 内部易用性测试 外部易用性测试 功能性测试 正向功能性测试 负向功能性测试 功能性测试工具 结语 概述 在软件开发…

课堂练习——路由策略

需求&#xff1a;将1.1.1.0/24网段重发布到网络中&#xff0c;不允许出现次优路径&#xff0c;实现全网可达。 在R1上重发布1.1.1.0/24网段&#xff0c;但是需要过滤192.168.12.0/24和192.168.13.0/24在R2和R3上执行双向重发布 因为R1引入的域外路由信息的优先级为150&#xff…