通过简单的实例来感觉一下java7和java8的新特性。当那条唯捷径省略了朝拜者,我便在一滴花露中瞬间彻悟。

java7代码实例

一、java7中switch中可以字符串

  1. @Test
  2. public void jdk7Switch() {
  3. String name = "huhx";
  4. switch (name) {
  5. case "huhx":
  6. System.out.println("name is = " + name);
  7. break;
  8. case "linux":
  9. System.out.println("name is = " + name);
  10. break;
  11. default:
  12. System.out.println("my name is huhx.");
  13. }
  14. }

二、二进制和数字下划线的分割的支持

  1. @Test
  2. public void jdk7Binary() {
  3. int bNum = 0b11110001;
  4. System.out.println(bNum); //
  5. int num = 12_234_34_45;
  6. System.out.println(num); //
  7. }

三、关于异常和自动的资源管理

  1. @Test
  2. public void jdk7CatchExceptions() {
  3. try {
  4. Integer.parseInt("aa");
  5. } catch (NumberFormatException | MaxRunTimeException e) {
  6. e.printStackTrace();
  7. }
  8. }
  9.  
  10. @Test
  11. public void jdk7TryWithResource() throws IOException {
  12. try (BufferedReader reader = new BufferedReader(new FileReader("C:/Users/76801/Desktop/huhx.txt"))) {
  13. StringBuilder builder = new StringBuilder();
  14. String line = null;
  15. while ((line = reader.readLine()) != null) {
  16. builder.append(line + "\n");
  17. }
  18. System.out.println(builder.toString());
  19. }
  20. }

java8代码实例

一、Lambda的简单使用

  1. package com.tomhu.huhx.java8;
  2.  
  3. import org.junit.Test;
  4.  
  5. import java.util.function.Function;
  6.  
  7. /**
  8. * @Author: huhx
  9. * @Date: 2017-09-21 上午 9:10
  10. */
  11. public class LambdaTest {
  12.  
  13. @Test
  14. public void lambdaThread1() {
  15. Thread thread = new Thread(() -> {
  16. System.out.println("hello wolrd");
  17. });
  18. thread.start();
  19. }
  20.  
  21. @Test
  22. public void lambaFunction1() {
  23. // Function是1.8里面的函数式接口
  24. Function<Integer, String> function1 = new Function<Integer, String>() {
  25. @Override
  26. public String apply(Integer integer) {
  27. return null;
  28. }
  29. };
  30.  
  31. // lambda expression
  32. Function<Integer, String> function2 = (t) -> String.valueOf(t);
  33.  
  34. // 引用的方式
  35. Function<Integer, String> function3 = String::valueOf;
  36. }
  37. }

二、函数式接口

  • 定义一个函数式接口:DefaultFunInterface]
  1. package com.tomhu.huhx.java8;
  2.  
  3. /**
  4. * @Author: huhx
  5. * @Date: 2017-09-21 上午 9:35
  6. */
  7. public interface DefaultFunInterface {
  8. default int count() {
  9. return 1;
  10. }
  11.  
  12. public static int find() {
  13. return 1;
  14. }
  15. }
  • 对上述的接口测试:InterfaceSuper
  1. package com.tomhu.huhx.java8;
  2.  
  3. import org.junit.Test;
  4.  
  5. /**
  6. * @Author: huhx
  7. * @Date: 2017-09-21 上午 9:34
  8. */
  9. public class InterfaceSuper {
  10. @Test
  11. public void defaultMethond() {
  12. DefaultFunInterface funInterface = new SubDefaultFunClass();
  13. System.out.println(funInterface.count()); //
  14. }
  15.  
  16. // 接口可以直接调用自己的static方法
  17. @Test
  18. public void staticMethod() {
  19. System.out.println(DefaultFunInterface.find()); //
  20. }
  21. }
  22.  
  23. class SubDefaultFunClass implements DefaultFunInterface {
  24. @Override
  25. public int count() {
  26. return 0;
  27. }
  28. }

三、java中nio的改进

  1. package com.tomhu.huhx.java8;
  2.  
  3. import org.junit.Test;
  4.  
  5. import java.io.File;
  6. import java.io.IOException;
  7. import java.nio.file.Files;
  8. import java.time.LocalDate;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11.  
  12. /**
  13. * @Author: huhx
  14. * @Date: 2017-09-21 上午 9:39
  15. */
  16. public class StreamTest {
  17. @Test
  18. public void streamTest1() {
  19. List<String> stringList = new ArrayList<>();
  20. stringList.add("linux");
  21. stringList.add("liuling");
  22. stringList.add("liuli");
  23. stringList.add("tomhu");
  24. stringList.add("zhoucf");
  25. stringList.stream().filter((s -> s.startsWith("l"))).forEach(System.out::print); // linuxliulingliuli
  26. }
  27.  
  28. @Test
  29. public void findAllFiles() throws IOException {
  30. Files.list(new File(".").toPath()).forEach(System.out::println);
  31. }
  32.  
  33. @Test
  34. public void localDateTest() {
  35. LocalDate localDate = LocalDate.now(); // 2017-09-21
  36. System.out.println(localDate);
  37. localDate = LocalDate.ofYearDay(2017, 333); // 2017-11-29
  38. System.out.println(localDate);
  39. }
  40. }

四、更加简单的遍历Collection类型

  1. public void listForEachTest() {
  2. List<String> lists = Arrays.asList("huhx", "linux", "liuling");
  3. lists.forEach(item -> {
  4. if (item.startsWith("l")) {
  5. System.out.println(item);
  6. }
  7. });
  8. lists.forEach(System.out::println);
  9.  
  10. lists.stream().filter(item -> item.contains("l")).forEach(System.out::println);
  11. }
  12.  
  13. public void mapForEachTest() {
  14. Map<String, String> map = new HashMap<>();
  15. map.put("name", "huhx");
  16. map.put("pass", "1234");
  17.  
  18. map.forEach((key, val)-> {
  19. if (key.equals("name")) {
  20. System.out.println(val);
  21. }
  22. });
  23. }

友情链接

java基础---->java的新特性(一)的更多相关文章

  1. 【Java基础】Java11 新特性

    Java11 新特性 新增字符串处理方法 新增方法: 判断字符串是否为空白 " ".isBlank(); // true 去除首尾空白 " Javastack " ...

  2. Java基础之java8新特性(1)Lambda

    一.接口的默认方法.static方法.default方法. 1.接口的默认方法 在Java8之前,Java中接口里面的默认方法都是public abstract 修饰的抽象方法,抽象方法并没有方法实体 ...

  3. 【Java基础】Java8 新特性

    Java8 新特性 Lambda 表达式 Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).使用它可以写出更简洁.更灵活的代码. L ...

  4. 【Java基础】Java9 新特性

    Java9 新特性 模块化系统 Java 和相关生态在不断丰富的同时也越来越暴露出一些问题: Java 运行环境的膨胀和臃肿.每次 JVM 启动的时候,至少会 30-60MB 的内存加载,主要原因是 ...

  5. 【Java基础】Java10 新特性

    Java10 新特性 局部变量类型推断 局部变量的显示类型声明,常常被认为是不必须的. 场景一:类实例化时.在声明一个变量时,总是习惯了敲打两次变量类型,第一次用于声明变量类型,第二次用于构造器. 场 ...

  6. java基础---java8后新特性

    1. java9 新特性 模块化的使用 减少内存的开销. 可简化各种类库和大型应用的开发和维护. 安全性,可维护性,提高性能. 在 module-info.java 文件中,我们可以用新的关键词mod ...

  7. JAVA JDK1.5-1.9新特性

    1.51.自动装箱与拆箱:2.枚举(常用来设计单例模式)3.静态导入4.可变参数5.内省 1.61.Web服务元数据2.脚本语言支持3.JTable的排序和过滤4.更简单,更强大的JAX-WS5.轻量 ...

  8. Java 8 正式发布,新特性全搜罗

    经过2年半的努力.屡次的延期和9个里程碑版本,甲骨文的Java开发团队终于发布了Java 8正式版本. Java 8版本最大的改进就是Lambda表达式,其目的是使Java更易于为多核处理器编写代码: ...

  9. Java基础-面向对象第三大特性之多态(polymorphism )

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  10. Java学习之==>Java8 新特性详解

    一.简介 Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.Java 8是 Java 自 Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库. ...

随机推荐

  1. server的响应数据

    前言 如果使用了MVC框架(比方,struts2). server的响应数据.分3种情况 1.响应数据是结果页面 2.响应数据是json格式的数据 3.响应数据是json格式的数据,然后再又一次发出一 ...

  2. How to suppress 'Maybe this is program method' warnings from ProGuard

    11down votefavorite 2 I'm using ProGuard with my Android application and I'm running getting the war ...

  3. 7款HTML5精美应用教程 让你立即爱上HTML5

    你喜欢HTML5吗?我想下面的这7个HTML5应用一定会让你爱上HTML5的,不信就一起来看看吧. 1.HTML5/jQuery雷达动画图表 图表配置十分简单 之前我们介绍过不少形形色色的HTML5图 ...

  4. ubuntu14.04_64位安装tensorflow-gpu

    第一步(可直接跳到第二步):安装nvidia显卡驱动 linux用户可以通过官方ppa解决安装GPU驱动的问题.使用如下命令添加Graphic Drivers PPA: sudo add-apt-re ...

  5. Java基础--深克隆补充

    深克隆文章很多,这里推荐Java提高篇--对象克隆(复制). 以上文章条理清晰,一目了然,但最近在项目中碰到的实际问题是,所要克隆的对象是加上子类父类共计207个,无论用上述两种方式的哪一种,都要一一 ...

  6. middle源码

    CREATE TABLE `middle` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `innserSessionid` VARCHAR(250 ...

  7. Thinkphp5笔记一:项目部署

    系统:window 7 64位 Thinkphp版本:5.0.5 环境:wampserver集成 笔记分为两大部分,配置篇与数据库篇 一.虚拟主机部署/本地部署 在网站根目录下建立文件index.ph ...

  8. EasyUI的功能树之异步树

    最近几个项目都用到了EasyUI这个Jquery框架,目前感觉起来还是很好使的,展示效果很好,帮助文档什么的资料很多,而且互联网上Easy粉很多,大多数拥护和喜爱EasyUI的粉丝们都愿意在网络平台互 ...

  9. Ubuntu下安装配置redis

    安装redis apt-get install redis-server 查看是否启动 ps -aux|grep redis 客户端连接 注: 安装Redis服务器,会自动地一起安装Redis命令行客 ...

  10. org.apache.http.client.methods.HttpGet 转到定义找不到源代码

    例如 org.apache.http.client.methods.HttpGet ,提示没有源码 到这里下载 http://hc.apache.org/downloads.cgi Source 4. ...