无涯教程-Java8 - 简介

47 阅读1分钟

Java8是Java编程语言开发的主要特性版本。其最初版本于2014年3月18日发布。随着Java8的发布,Java提供了对函数式编程、新的JavaScript引擎、用于日期时间操作的新API、新的流Steam API等的支持。

新函数

  • lambda expression                  -  增加了函数性处理能力。

  • Method references                  -  按函数名称引用函数,而不是直接调用函数,使用函数作为参数。

  • Default method                       - 接口具有默认方法实现。

  • New tools                                  - 添加了新的编译器工具和实用程序(如"jdeps"),以确定依赖关系。

  • Stream API                               - 新流接口,便于管道处理。

  • Date Time API                         - 改进了日期时间接口。

  • Optional                                    - 强调正确处理空值的最佳做法。

  • Nashorn,javascript engine - 用于执行javascript代码。

import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.Comparator;

public class Java8Tester {

public static void main(String args[]) {

  </span><span class="typ">List</span><span class="pun">&lt;</span><span class="typ">String</span><span class="pun">&gt;</span><span class="pln"> names1</span><span class="pun">=</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ArrayList</span><span class="pun">&lt;</span><span class="typ">String</span><span class="pun">&gt;();</span><span class="pln">
  names1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Mahesh "</span><span class="pun">);</span><span class="pln">
  names1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Suresh "</span><span class="pun">);</span><span class="pln">
  names1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Ramesh "</span><span class="pun">);</span><span class="pln">
  names1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Naresh "</span><span class="pun">);</span><span class="pln">
  names1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Kalpesh "</span><span class="pun">);</span><span class="pln">
	
  </span><span class="typ">List</span><span class="pun">&lt;</span><span class="typ">String</span><span class="pun">&gt;</span><span class="pln"> names2</span><span class="pun">=</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ArrayList</span><span class="pun">&lt;</span><span class="typ">String</span><span class="pun">&gt;();</span><span class="pln">
  names2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Mahesh "</span><span class="pun">);</span><span class="pln">
  names2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Suresh "</span><span class="pun">);</span><span class="pln">
  names2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Ramesh "</span><span class="pun">);</span><span class="pln">
  names2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Naresh "</span><span class="pun">);</span><span class="pln">
  names2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Kalpesh "</span><span class="pun">);</span><span class="pln">
	
  </span><span class="typ">Java8Tester</span><span class="pln"> tester</span><span class="pun">=</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Java8Tester</span><span class="pun">();</span><span class="pln">
  </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Sort using Java 7 syntax: "</span><span class="pun">);</span><span class="pln">
	
  tester</span><span class="pun">.</span><span class="pln">sortUsingJava7</span><span class="pun">(</span><span class="pln">names1</span><span class="pun">);</span><span class="pln">
  </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">names1</span><span class="pun">);</span><span class="pln">
  </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Sort using Java 8 syntax: "</span><span class="pun">);</span><span class="pln">
	
  tester</span><span class="pun">.</span><span class="pln">sortUsingJava8</span><span class="pun">(</span><span class="pln">names2</span><span class="pun">);</span><span class="pln">
  </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">names2</span><span class="pun">);</span><span class="pln">

}

//使用Java 7排序 private void sortUsingJava7(List<String> names) {
Collections.sort(names, new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.compareTo(s2); } }); }

//使用Java 8排序 private void sortUsingJava8(List<String> names) { Collections.sort(names, (s1, s2) -> s1.compareTo(s2)); } }

运行程序,得到以下输出。

Sort using Java 7 syntax:
[ Kalpesh Mahesh Naresh Ramesh Suresh ]
Sort using Java 8 syntax:
[ Kalpesh Mahesh Naresh Ramesh Suresh ]

这里,sortUsingJava8()方法使用排序函数,并将lambda表达式作为参数来获取排序标准。

参考链接

www.learnfk.com/java/java8-…