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

java7代码实例

一、java7中switch中可以字符串

@Test
public void jdk7Switch() {
String name = "huhx";
switch (name) {
case "huhx":
System.out.println("name is = " + name);
break;
case "linux":
System.out.println("name is = " + name);
break;
default:
System.out.println("my name is huhx.");
}
}

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

@Test
public void jdk7Binary() {
int bNum = 0b11110001;
System.out.println(bNum); //
int num = 12_234_34_45;
System.out.println(num); //
}

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

@Test
public void jdk7CatchExceptions() {
try {
Integer.parseInt("aa");
} catch (NumberFormatException | MaxRunTimeException e) {
e.printStackTrace();
}
} @Test
public void jdk7TryWithResource() throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader("C:/Users/76801/Desktop/huhx.txt"))) {
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
builder.append(line + "\n");
}
System.out.println(builder.toString());
}
}

java8代码实例

一、Lambda的简单使用

package com.tomhu.huhx.java8;

import org.junit.Test;

import java.util.function.Function;

/**
* @Author: huhx
* @Date: 2017-09-21 上午 9:10
*/
public class LambdaTest { @Test
public void lambdaThread1() {
Thread thread = new Thread(() -> {
System.out.println("hello wolrd");
});
thread.start();
} @Test
public void lambaFunction1() {
// Function是1.8里面的函数式接口
Function<Integer, String> function1 = new Function<Integer, String>() {
@Override
public String apply(Integer integer) {
return null;
}
}; // lambda expression
Function<Integer, String> function2 = (t) -> String.valueOf(t); // 引用的方式
Function<Integer, String> function3 = String::valueOf;
}
}

二、函数式接口

  • 定义一个函数式接口:DefaultFunInterface]
package com.tomhu.huhx.java8;

/**
* @Author: huhx
* @Date: 2017-09-21 上午 9:35
*/
public interface DefaultFunInterface {
default int count() {
return 1;
} public static int find() {
return 1;
}
}
  • 对上述的接口测试:InterfaceSuper
package com.tomhu.huhx.java8;

import org.junit.Test;

/**
* @Author: huhx
* @Date: 2017-09-21 上午 9:34
*/
public class InterfaceSuper {
@Test
public void defaultMethond() {
DefaultFunInterface funInterface = new SubDefaultFunClass();
System.out.println(funInterface.count()); //
} // 接口可以直接调用自己的static方法
@Test
public void staticMethod() {
System.out.println(DefaultFunInterface.find()); //
}
} class SubDefaultFunClass implements DefaultFunInterface {
@Override
public int count() {
return 0;
}
}

三、java中nio的改进

package com.tomhu.huhx.java8;

import org.junit.Test;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List; /**
* @Author: huhx
* @Date: 2017-09-21 上午 9:39
*/
public class StreamTest {
@Test
public void streamTest1() {
List<String> stringList = new ArrayList<>();
stringList.add("linux");
stringList.add("liuling");
stringList.add("liuli");
stringList.add("tomhu");
stringList.add("zhoucf");
stringList.stream().filter((s -> s.startsWith("l"))).forEach(System.out::print); // linuxliulingliuli
} @Test
public void findAllFiles() throws IOException {
Files.list(new File(".").toPath()).forEach(System.out::println);
} @Test
public void localDateTest() {
LocalDate localDate = LocalDate.now(); // 2017-09-21
System.out.println(localDate);
localDate = LocalDate.ofYearDay(2017, 333); // 2017-11-29
System.out.println(localDate);
}
}

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

public void listForEachTest() {
List<String> lists = Arrays.asList("huhx", "linux", "liuling");
lists.forEach(item -> {
if (item.startsWith("l")) {
System.out.println(item);
}
});
lists.forEach(System.out::println); lists.stream().filter(item -> item.contains("l")).forEach(System.out::println);
} public void mapForEachTest() {
Map<String, String> map = new HashMap<>();
map.put("name", "huhx");
map.put("pass", "1234"); map.forEach((key, val)-> {
if (key.equals("name")) {
System.out.println(val);
}
});
}

友情链接

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. C# 在托盘显示图标

    //上面一行是主窗体InitializeComponent()方法中需要添加的引用 this.SizeChanged += new System.EventHandler(this.Form1_Siz ...

  2. CI框架 -- URI 路由

    一般情况下,一个 URL 字符串和它对应的控制器中类和方法是一一对应的关系. URL 中的每一段通常遵循下面的规则:example.com/class/function/id/ 但是有时候,你可能想改 ...

  3. jQuery使用动态渲染表单功能完成ajax文件下载

    原文链接:http://www.poluoluo.com/jzxy/201301/195126.html 封装的通用js函数代码: // Ajax 文件下载 jQuery.download = fun ...

  4. Objective-C语法之nonatomic和atomic之间的区别

    atomic: 保证 setter/getter 这两个方法的一个原语操作.如果有多个线程同时调用 setter 的话,不会出现某一个线程执行  setter 全部语句之前,另一个线程开始执行 set ...

  5. jQuery使用scrollTop获取div标签的滚动条已滚动高度(jQuery版本1.6+时,用prop()方法代替attr()方法)

    $("#content").append('<div>' + data.msg + '</div>'+.'<br>');$('#content' ...

  6. Node.js之exports与module.exports

    每一个node.js执行文件,都自动创建一个module对象,同时,module对象会创建一个叫exports的属性,初始化的值是 {} module.exports = {}; Node.js为了方 ...

  7. 什么是REST设计风格

    https://zh.wikipedia.org/wiki/REST http://www.infoq.com/cn/articles/rest-introduction

  8. MS Chart Control 學習手記(二) - 圓餅圖

    using System.Web.UI.DataVisualization.Charting; 02 using System.Drawing; 03   04 namespace Chart.AJA ...

  9. layui文件上传进度条(模拟)

    1.修改上传组件js(没测) https://blog.csdn.net/weixin_42457316/article/details/81017471 https://www.cnblogs.co ...

  10. Okhttp封装、网络层扩展

    一.概述 首先在这里本片文章是以网络通信封装为主,而app开发首先重要就是网络通信,而如今主流的async.volley.okhttp等,阿么这么网络库怎样能做到更好封装.更好的切换,从而不影响业务层 ...