文档章节

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

祁达方
 祁达方
发布于 2016/08/15 22:59
字数 789
阅读 58
收藏 3
点赞 0
评论 0

现在才来了解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
大兴
程序员
Oracle Java SE 8 发行版更新:限制商业或生产用途

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

抢小孩糖吃 ⋅ 04/18 ⋅ 39

天了噜,Java 8 要停止维护了!

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

Java技术栈 ⋅ 04/22 ⋅ 0

Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!

前几天写了一篇 Java 8 即将在 2019 年停止免费向企业提供更新的文章,企图迫使用户向更新一代的 Java 版本升级,但让人遗憾的是,小编今天收到了 Oracle Java 版本的升级推送,装完居然是 ...

Java技术栈 ⋅ 04/27 ⋅ 0

Java 8 你需要掌握的新特性

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

苗新国 ⋅ 2016/06/22 ⋅ 0

Java 5 、6、 7中新特性

JDK5新特性(与1.4相比)【转】 1 循环 for (type variable : array){ body} for (type variable : arrayList){body} 而1.4必须是: for (int i = 0; i < array.length; i++){ type variabl......

thinkyoung ⋅ 2014/10/14 ⋅ 0

Java开发学习之三版本简介 java编程

  Java编程语言,在更迭迅速的互联网领域多年屹立不倒,足以得见Java这门语言旺盛的生命力,因此,会有很多想要进入互联网领域的朋友,想要学Java来转行开发。但是,所谓“隔行如隔山”,j...

老男孩Linux培训 ⋅ 06/05 ⋅ 0

CentOS7.X安装JDK-1.8.0

JAVA_JDK安装 JAVA_JDK简介 Java SE、Java EE、Java ME区别 安装JAVA_JDK准备 检查是否安装JDK 卸载已安装JDK YUM安装JAVA_JDK yum安装jdk 检查安装是否成功 源码安装JAVA_JDK 命令行下载 JD...

qq2233466866 ⋅ 06/11 ⋅ 0

Lambda 表达式有何用处?如何使用?(针对Java8)

什么是Lambda? 我们知道,对于一个Java变量,我们可以赋给其一个“值”。 如果你想把“一块代码”赋给一个Java变量,应该怎么做呢? 比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的J...

亭子happy ⋅ 06/06 ⋅ 0

深入理解JVM学习笔记(一、总览)

1、JVM历史 2、JVM内存结构 3、JVM垃圾回收机制 4、JVM性能监控工具 5、JVM性能调优案例时间 6、JVM类文件结构 7、JVM类加载机制 8、JVM字节码执行引擎 9、JVM虚拟机编译及其运行时优化 10、...

jintaohahahaha ⋅ 05/28 ⋅ 0

请教Kafka在window下运行错误的问题

我在window server 2012 上运行 kafka 的时候 出现这个错误 我本地是可以的,但是在线上服务器就出错了 应该如何解决,请教下 !! Java的版本: C:UsersAdministrator>java -version java ...

Macrotea ⋅ 04/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 17分钟前 ⋅ 0

Java学习路径及练手项目合集

Java学习路径及练手项目合集

颖伙虫 ⋅ 32分钟前 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 58分钟前 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

MVC——统一报文格式的异常处理响应

在我们写controller层的时候,常常会有这样的困惑,如果需要返回一个数据是,可能为了统一回去构造一个类似下列的数据格式: { status:true, msg:"保存成功!", data:[]} 而且在写...

alexzhu592 ⋅ 昨天 ⋅ 0

android -------- 打开本地浏览器或指定浏览器加载,打电话,打开第三方app

开发中常常有打开本地浏览器加载url或者指定浏览器加载, 还有打开第三方app, 如 打开高德地图 百度地图等 在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。 如果手机本身...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部