文档章节

《写给大忙人看的java se 8》笔记

祁达方
 祁达方
发布于 2016/08/15 22:59
字数 789
阅读 60
收藏 3

现在才来了解java8,是不是后知后觉了点?

新的编程技术,个人不喜欢第一时间跟进,待社区已有实践积淀再切入似乎更划算些?

一点点精明的考虑。 不多说,上代码。

//读《写给大忙人看的java se 8》做的笔记代码
//希望对忙到连这书都没工夫看的你,匆匆一瞥,留下印象
//首发于page.427studio.net/blog/blog_1471272707203.html
//祝编程愉快
public class MainTest {

    //第一章,讲lambda表达式
    //lambda表达式类似javascript的函数字面量,可用于替代java的匿名内部类
    //基本型为 (形参列表)->{方法体},有多种简写方式,不赘
    //某个方法指定了接口参数时,即可将lambda表达式传入
    private static void c1(){
        List<Integer> l = Arrays.asList(1, 2, 3);

        //功能不言自明
        //forEach后面会讲,这里脸熟一下
        l.forEach(i -> print(i));

        //另外,现在接口可以声明默认方法了
        //所以,旧的接口+默认抽象类的二重声明,可以合为只声明个接口
    }

    //第二章,Stream简化集合使用
    private static void c2(){
        //过滤,可以理解为sql的where子句
        List<Integer> l = Arrays.asList(1, 2, 3);
        long bigNumberCount = l.stream().filter(i -> i % 2 == 1).count();//顺便演示了聚合
        print(bigNumberCount);//2

        //投影,可以理解为sql的指定列子句
        Stream<Integer> plusOne = l.stream().map(i -> i+1);
        plusOne.forEach(i -> print(i));//2,3,4

        //聚合上面已演示,可以理解为sql的count/avg/max/min语法

        //收集为{1:2, 2:3, 3:4}的字典
        Map<Integer, Integer> result = 
                l.stream().collect(Collectors.toMap(i -> i, i -> i+1));
        result.forEach((k,v) -> print(k+":"+v));//顺便演示多个形参的lambda
    }

    //第五章,讲新的日期时间API
    private static void c5(){
        //日期
        LocalDate today = LocalDate.now();
        print(today);//2016-08-15
        LocalDate birthday = LocalDate.of(1988, 10, 31);
        print(birthday);//1988-10-31
        //LocalDate有一些plusDays withDayOfMonth等实用方法

        //时间
        LocalTime time = LocalTime.of(10, 31);
        print(time);//10:31
        //LocalTime有一些plusHours withMinute等实用方法

        //日期时间
        LocalDateTime dateTime = LocalDateTime.now();
        print(dateTime);//2016-08-15T21:46:01.719

        //日期转字符串,使用默认格式
        print(DateTimeFormatter.ISO_DATE.format(birthday));
        //字符串转日期,使用自定义格式
        DateTimeFormatter myFormatter = DateTimeFormatter.ofPattern("yyyy..MM..dd");
        LocalDate fromStr = (LocalDate)LocalDate.parse("1988..10..31", myFormatter);
        print(fromStr);

        //与老Date互转
        Date oldClass = Date.valueOf(birthday);
        LocalDate newClass = oldClass.toLocalDate();
    }

    //杂项的改进
    private static void c8(){
        //String添加join
        String whoIsHero = String.join(",", "曹操", "刘备", "孙权");
        print(whoIsHero);

        //Iterable添加forEach
        Arrays.asList("关羽", "张飞", "赵云").forEach(i -> print(i));

        //方便地读取文件内容
        Path path = Paths.get("/juqiuwang_logs", "juqiuwang.log");//顺便演示Path使用
        try(Stream<String> lines = Files.lines(path)){//顺便演示自动关闭资源
            lines.forEach(s -> print(s));
        }catch(Exception e){
            throw new RuntimeException(e);
        }
    }

    //java7特性
    private static void c9(){
        //自动关闭资源的try(xx)写法在c9中已演示

        //路径Path在c9中也用过了
        //方便地读取文件内容
        try{
            List<String> lines = Files.readAllLines(Paths.get("/juqiuwang_logs", "juqiuwang.log"));
            lines.forEach(s -> print(s));
            //Files另外还有些实用方法,不赘
        }catch(Exception e){
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args){
        c1();
        c2();
        //第3章讲lambda的应用,请看书
        //第4章讲JavaFX,如感兴趣请看书
        c5();
        //第6章讲并发,如感兴趣请看书
        //第7章讲javascript引擎,如感兴趣请看书
        c8();
        c9();
    }

    private static void print(Object o){
        System.out.println(o);
    }

}

© 著作权归作者所有

共有 人打赏支持
祁达方
粉丝 11
博文 41
码字总数 51226
作品 0
大兴
程序员
fbf的书单,欢迎分享,欢迎更新

本人看过的以下书值得推荐的,列出来的就是值得推荐的 这个颜色是一般推荐 这个颜色是强烈推荐 这个颜色是神作,收藏吧 物联网:生产力的变革 李虹著 开拓视野,一般 源码中国:全球IT外包新原...

fbf
2015/03/16
0
0
Java 8 你需要掌握的新特性

Java 8 是一个大的变更版本,提供了很多优秀的新功能和更好的API。可是很多同学因为教材或是工作原因,对Java自身的学习和认知还停留在 Java 6 上。所以整理一下我认为我们应该掌握的 Java 8...

苗新国
2016/06/22
60
0
Oracle Java SE 8 发行版更新:限制商业或生产用途

Oracle Java SE 8 发行版更新 Oracle Java SE 8 的公开更新仍面向单独的个人使用提供,至少持续至 2020 年底。 2019 年 1 月以后发布的 Oracle Java SE 8 公开更新将不向没有商用许可证的业务...

抢小孩糖吃
04/18
0
61
天了噜,Java 8 要停止维护了!

前些天的中兴事件,已经让国人意识到自己核心技术的不足,这次的 JDK 8 对企业停止免费更新更是雪上加霜。。 以下是 Oracle 官网提示的 JDK8 终止更新公告。 原文内容:Oracle will not pos...

Java技术栈
04/22
0
0
spring boot的异常记录(Java SE 9不包含javaEE的Jar包 )

其实我就是按照教程添加的依赖和相应代码,怎么就出问题了呢?而且这个类的包还是javax开头的 JAXB API是java EE 的API,因此在java SE 9.0 中不再包含这个 Jar 包。 java 9 中引入了模块的概...

woshixin
08/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue组件传值之(父子)

⚠️组件的作用域是孤立的,vue解决组件传值问题是通过props ⚠️子传父的时候需要vm.$emit触发实例上的事件,页面需要定一个方法去取值 ⚠️一定要注意命名方式和书写,例如mylChart和myl-c...

peakedness丶
13分钟前
0
0
SpringBoot开发案例之整合Dubbo分布式服务

前言 在 SpringBoot 很火热的时候,阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑,在停更N年之后终于进行维护了。在之前的微服务中,使用的是当当维护的版本 Dubbox,整合方式也是使用的 ...

微笑向暖wx
27分钟前
0
0
TypeScript基础入门之装饰器(二)

转发 TypeScript基础入门之装饰器(二) 装饰器求值 如何应用装饰器应用于类内的各种声明的顺序: 1. 对每个实例成员应用参数装饰器,后跟Method,Accessor或Property Decorators。 2. 对每个静...

durban
28分钟前
0
0
Java程序员年薪40W是什么水平?税前还是税后?

很多人学Java都是冲着Java的高薪来的,那么搞Java的程序员,年薪40W到底是个什么水平呢,本文达妹和大家一起探讨一下。 前几天在论坛看到这么一个问题,搞Java的程序员年薪40w是什么水平?一...

架构师springboot
33分钟前
1
0
区块链100讲:盘点那些常用的加密算法原理

在开发过程中,常常用到各种加密方法和算法,本文总结了几种常用加密方法的原理。 1 对称加密 原理:加密和解密数据使用同一个密钥,适合对大量数据进行加解密 安全性:关键是密钥的保存方式...

HiBlock
47分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部