爪哇2博客
爪哇2博客

爪哇 8教程

爪哇 8教程

在本文中,我们将介绍Java 8教程。
我已经写了很多关于Java 8的教程。这是所有Java 8帖子的索引帖子。


爪哇 8具有许多新功能,这些新功能将改变您进行编程的方式。这是使用Java 8编程需要了解的功能列表。


Lambda表达式

Lambda表达式表示可以传递的匿名函数。 Lambda表达式没有名称,但是具有参数,主体和返回类型。
lambda表达式的基本语法如下:

(参数)-> expression
要么
(参数)-> { statements; }

如您所见,如果您有多个语句,则需要大括号。

功能界面

功能界面是 接口 只能有一个抽象方法。
功能接口和lambda表达式齐头并进。您可以为函数接口编写lambda表达式。
例如:
可运行的界面

1
2
3
4
5
 
上市 接口 可运行 {
    上市 抽象 虚空 ();
}
 

接口中的默认方法

爪哇 8在接口中引入了许多新方法,但是它可能会破坏旧版本的代码。如果任何类未实现接口’s方法,则给出编译错误。为了解决此问题,Java 8引入了默认方法。听起来可能令人惊讶,但接口也可以包含实现代码。您可以在界面中声明默认方法,它将成功’强制客户端实施默认方法。
例如:
reversed()是Comparator界面中的默认方法。

接口中的静态方法

与默认方法类似,您也可以在界面中使用静态方法。
例如:
naturalOrder()是Comparator接口中的静态方法。

可选的

爪哇 8可选可以用来避免NullPointerException。我已经编写了详细的Java 8可选教程。

流API

流是Java 8的最大新增功能之一。StreamAPI可帮助您以类似于SQL查询的声明性方式处理数据。
例如:
让’s说您想过滤年龄大于30岁的员工并创建姓名列表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
组织.Arpit.爪哇2blog;
 
上市 雇员 {
    私人的 名称;
    私人的 整型 年龄;
 
    上市 雇员( 名称, 整型 年龄) {
        ();
        这个.名称 = 名称;
        这个.年龄 = 年龄;
    }
    上市 getName() {
        返回 名称;
    }
    上市 虚空 setName( 名称) {
        这个.名称 = 名称;
    }
    上市 整型 getAge() {
        返回 年龄;
    }
    上市 虚空 setAge(整型 年龄) {
        这个.年龄 = 年龄;
    }
}
 

建立课程"EmployeeMain"它将同时使用常规和Java 8’s流到员工的文件管理器列表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
组织.Arpit.爪哇2blog;
 
进口 爪哇.实用程序.数组列表;
进口 爪哇.实用程序.清单;
进口 爪哇.实用程序.可选的;
进口 爪哇.实用程序..收藏家;
 
上市 员工主要 {
 
    上市 静态的 虚空 主要([] args)
    {
        清单<雇员> 员工名单 = createEmployeeList();
        清单<> 过滤EmployeeByAge = 过滤EmployeeByAge(员工名单);
        系统..打印(“使用常规方法过滤的员工列表:”);
        对于 ( 员工姓名:过滤EmployeeByAge) {
            系统..打印(员工姓名);
        }
 
        系统..打印(“ ===============================”);
        系统..打印(“使用流过滤的员工列表:”);
        清单<> 过滤EmployeeByAgeWithStream = 过滤EmployeeByAgeWithStream(员工名单);
        对于 ( 员工姓名:过滤EmployeeByAgeWithStream) {
            系统..打印(员工姓名);
        }
    }
 
    上市 静态的 清单<> 过滤EmployeeByAge(清单<雇员> 员工名单)
    {
        //使用常规方式
        清单<> employeeFilteredList= 数组列表<>();
        对于(雇员 e:员工名单)
        {
            如果(e.getAge()>20)
            {
                employeeFilteredList.(e.getName());
            }
        }
        返回 employeeFilteredList;
    }
    上市 静态的 清单<> 过滤EmployeeByAgeWithStream(清单<雇员> 员工名单)
    {
        //使用Java 8流
        清单<> employeeFilteredList = 员工名单.()
                  .过滤(e->e.getAge()>20)
                  .地图(雇员::getName)
                  .收藏(收藏家.到清单());
        返回 employeeFilteredList;
    }
    上市 静态的 清单<雇员> createEmployeeList()
    {
        清单<雇员> 员工名单= 数组列表<>();
 
        雇员 e1= 雇员(“约翰”,21);
        雇员 e2= 雇员(“马丁”,19);
        雇员 e3= 雇员(“玛丽”,31);
        雇员 e4= 雇员(“斯蒂芬”,18);
        雇员 e5= 雇员(加里,26);
 
        员工名单.(e1);
        员工名单.(e2);
        员工名单.(e3);
        员工名单.(e4);
        员工名单.(e5);
 
        返回 员工名单;
    }
}
 

当您在程序上方运行时,将获得以下输出

使用常规方法过滤的员工列表:
约翰
玛丽
加里
===============================
使用Stream过滤的员工列表:
约翰
玛丽
加里

如您所见,Stream可以帮助您以简洁的方式编写代码。


爪哇 8日期/时间

爪哇 8引入了新的日期和时间API。涵盖了我们使用了很长时间的Date和Calendar API的所有缺陷。
让’看到了一些新的API类。

本地日期

本地日期类仅表示日期。没有时间或时区信息。

1
2
3
4
5
6
 
本地日期 localDate=本地日期.现在();
        系统..打印(“年: ”+localDate.getYear());
        系统..打印(“月份:”+localDate.getMonth());
        系统..打印(“天:”+localDate.getDayOfMonth());
 

输出:

年:2018
月:五月
Day:20

当地时间

本地日期类仅表示时间。没有日期或时区信息。

1
2
3
4
5
6
 
本地日期 localDate=本地日期.现在();
        系统..打印(“年: ”+localDate.getYear());
        系统..打印(“月份:”+localDate.getMonth());
        系统..打印(“天:”+localDate.getDayOfMonth());
 

输出:

时间:0
分钟:32
第二名:54

本地日期Time

本地日期Time类代表日期和时间。没有时区信息。

1
2
3
4
5
6
7
8
9
 
本地日期Time localDateTime = 本地日期Time.现在();
        系统..打印(“年: ”+localDateTime.getYear());
        系统..打印(“月份:”+localDateTime.getMonth());
        系统..打印(“天:”+localDateTime.getDayOfMonth());
        系统..打印(“小时:”+localDateTime.getHour());
        系统..打印(“分钟:”+localDateTime.getMinute());
        系统..打印(“第二:”+localDateTime.getSecond());
 

输出:

年:2018
月:五月
Day:20
时间:0
分钟:35
第二名:40

瞬间

瞬间类用于表示Java中的时间戳。您可以在Instant上执行加号,减号和其他各种操作。

1
2
3
4
5
6
 
瞬间 实例1 = 瞬间.现在();
        瞬间 实例2=实例1.加秒(5);
        系统..打印(“即时1:”+ 实例1);
        系统..打印(“即时2:”+ 实例2);
 

输出:

即时1:2018-05-19T19:10:23.540064Z
即时2:2018-05-19T19:10:28.540064Z

持续时间

持续时间类别表示两个瞬间之间的时间间隔(以秒或毫秒为单位)。

1
2
3
4
5
6
7
 
瞬间 开始 = 瞬间.解析(“ 2018-10-13T11:15:35.00Z”);
        瞬间 结束 = 瞬间.解析(“ 2018-10-13T11:16:35.00Z”);
 
        持续时间 持续时间 = 持续时间.之间(开始, 结束);
        系统..打印(“持续时间(以秒为单位):”+持续时间.getSeconds());
 

输出:

持续时间(秒):60

那’关于Java 8教程的全部内容。


导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 在Java中将日期转换为LocalDate
    1月12日

    爪哇日期到LocalDate

    在这篇文章中,我们将看到如何在Java中将Date转换为LocalDate。有时,我们可能需要将Date转换为新的Java 8 API,反之亦然。在Java中,有多种将Date转换为LocalDate的方法。另请参见:使用Date类的[InInstant()方法将Java中的LocalDate转换为Date…]

  • 在Java中将LocalDate转换为Date
    1月11日

    迄今为止的Java 本地日期

    在这篇文章中,我们将看到如何将LocalDate转换为Date。 爪哇 8引入了许多有关日期和时间的新API。有多种方法可以将Java 本地日期Time转换为日期。使用Instant对象您可以使用来自Zone的Instant对象将LocalDate转换为Date。这是 […]

  • 将流转换为Java中的列表
    12月31日

    爪哇流列表

    在本文中,我们将看到如何在Java中将Stream转换为List。在Java中,有多种方法可以将Stream转换为List。使用Collectors.toList()可以将Collectors.toList()传递给Stream.collect()方法,以在Java中将Stream转换为List。流’的collect方法对Stream和Collectors的元素执行可变的约简操作。toList()提供[…]

  • 在Java中将LocalDateTime转换为时间戳
    11月18日

    在Java中将LocalDateTime转换为时间戳

    在本文中,我们将如何将LocalDateTime转换为Timestamp。在学习如何将localdatetime转换为时间戳之前,让我们了解LocalDateTime和Timestamp,并了解这种转换的重要性。 本地日期Time 本地日期Time在Java 8中已引入。LocalDateTime可以导入时间包:import 爪哇.time.LocalDateTime; 本地日期Time是使用的不可变对象[…]

  • 8月28日

    爪哇 8流 API深入指南

    在这篇文章中,我们将看到Java 8流的深入概述,其中包含许多示例和练习。简介您可能认为Stream必须类似于InputStream或OutputStream,但是’并非如此。流表示支持顺序和并行聚合操作的一系列元素。流不存储[…]

  • 要映射的Java流列表
    4月26日

    要映射的Java流列表

    在本文中,我们将看到如何在Java 8中使用Stream将List转换为Map。’s toMap()可与Stream一起使用,以在Java中将List转换为Map。考虑一个名为Movie的类,它具有3个字段–编号,名称和类型[crayon-601e83ce0b4b4447271186 /]创建电影列表,然后将其转换为[…]

Comments

  1. 不错的帖子,易于阅读和理解。
    关于在Java 8中修复Interface静态方法的链接,我只有一条评论。

    非常感谢

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


让’s be Friends

©2020 爪哇2博客