Skip to content

Commit 1fb0e38

Browse files
committed
Update java8-common-new-features.md
1 parent cc53ccb commit 1fb0e38

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

docs/java/new-features/java8-common-new-features.md

+7-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 作为一个老程序员,我从来不用 Java 8 新特性
1+
# 我,一个老程序员,最近才开始用 Java 8 新特性
22

33
Oracle 于 2014 发布了 Java8(jdk1.8),诸多原因使它成为目前市场上使用最多的 jdk 版本。虽然发布距今已将近 7 年,但很多程序员对其新特性还是不够了解,尤其是用惯了 java8 之前版本的老程序员,比如我。
44

@@ -63,15 +63,13 @@ public class InterfaceNewImpl implements InterfaceNew , InterfaceNew1{
6363
}
6464
```
6565

66-
但是,如果 `InterfaceNew1` 接口实现了`InterfaceNew` 接口的话,就不需要重写 `def()`
67-
6866
**在 Java 8 ,接口和抽象类有什么区别的?**
6967

7068
很多小伙伴认为:“既然 interface 也可以有自己的方法实现,似乎和 abstract class 没多大区别了。”
7169

7270
其实它们还是有区别的
7371

74-
1. interface 和 class 的区别,好像是废话,主要有
72+
1. interface 和 class 的区别,好像是废话,主要有
7573

7674
- 接口多实现,类单继承
7775
- 接口的方法是 public abstract 修饰,变量是 public static final 修饰。 abstract class 可以用其他修饰符
@@ -94,7 +92,7 @@ public class InterfaceNewImpl implements InterfaceNew , InterfaceNew1{
9492

9593
## Lambda 表达式
9694

97-
接下来谈众所周知的 Lambda 表达式。它是推动 Java 8 发布的最重要新特性。是继泛型(Generics)和注解(annotation)以来最大的变化。
95+
接下来谈众所周知的 Lambda 表达式。它是推动 Java 8 发布的最重要新特性。是继泛型(`Generics`)和注解(`Annotation`)以来最大的变化。
9896

9997
使用 Lambda 表达式可以使代码变的更加简洁紧凑。让 java 也能支持简单的*函数式编程*
10098

@@ -375,7 +373,7 @@ public static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)
375373

376374
### 实战
377375

378-
本文列出 Stream 具有代表性的方法之使用,更多的使用方法还是要看 Api。
376+
本文列出 `Stream` 具有代表性的方法之使用,更多的使用方法还是要看 Api。
379377

380378
```java
381379
@Test
@@ -433,9 +431,9 @@ public void test() {
433431

434432
### 延迟执行
435433

436-
在执行返回 Stream 的方法时,并不立刻执行,而是等返回一个非 Stream 的方法后才执行。因为拿到 Stream 并不能直接用,而是需要处理成一个常规类型。这里的 Stream 可以想象成是二进制流(2 个完全不一样的东东),拿到也看不懂。
434+
在执行返回 `Stream` 的方法时,并不立刻执行,而是等返回一个非 `Stream` 的方法后才执行。因为拿到 `Stream` 并不能直接用,而是需要处理成一个常规类型。这里的 `Stream` 可以想象成是二进制流(2 个完全不一样的东东),拿到也看不懂。
437435

438-
我们下面分解一下 filter 方法。
436+
我们下面分解一下 `filter` 方法。
439437

440438
```java
441439
@Test
@@ -462,7 +460,7 @@ Predicate.test 执行
462460

463461
按执行顺序应该是先打印 4 次「`Predicate.test` 执行」,再打印「`count` 执行」。实际结果恰恰相反。说明 filter 中的方法并没有立刻执行,而是等调用`count()`方法后才执行。
464462

465-
上面都是串行 Stream 的实例。并行 parallelStream 在使用方法上和串行一样。主要区别是 parallelStream 可多线程执行,是基于 ForkJoin 框架实现的,有时间大家可以了解一下 `ForkJoin` 框架和 `ForkJoinPool`。这里可以简单的理解它是通过线程池来实现的,这样就会涉及到线程安全,线程消耗等问题。下面我们通过代码来体验一下串行流的多线程执行。
463+
上面都是串行 `Stream` 的实例。并行 `parallelStream` 在使用方法上和串行一样。主要区别是 `parallelStream` 可多线程执行,是基于 ForkJoin 框架实现的,有时间大家可以了解一下 `ForkJoin` 框架和 `ForkJoinPool`。这里可以简单的理解它是通过线程池来实现的,这样就会涉及到线程安全,线程消耗等问题。下面我们通过代码来体验一下串行流的多线程执行。
466464

467465
```java
468466
@Test

0 commit comments

Comments
 (0)