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

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

新的编程技术,个人不喜欢第一时间跟进。

待社区已有实践积淀再切入似乎更划算些?

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

//读《写给大忙人看的java se 8》做的笔记代码

//希望对忙到连这书都没工夫看的你,匆匆一瞥,留下印象

//祝编程愉快

public class MainTest {

//第一章,讲lambda表达式

//lambda表达式类似javascript的函数字面量,可用于替代java的匿名内部类

//基本型为 (形参列表)->{方法体},有多种简写方式,不赘

//某个方法指定了接口参数时,即可将lambda表达式传入

private static void c1(){

List l = Arrays.asList(1, 2, 3);

//功能不言自明

//forEach后面会讲,这里脸熟一下

l.forEach(i -> print(i));

//另外,现在接口可以声明默认方法了

//所以,旧的接口+默认抽象类的二重声明,可以合为只声明个接口

}

//第二章,Stream简化集合使用

private static void c2(){

//过滤,可以理解为sql的where子句

List l = Arrays.asList(1, 2, 3);

long bigNumberCount = l.stream().filter(i -> i % 2 == 1).count();//顺便演示了聚合

print(bigNumberCount);//2

//投影,可以理解为sql的指定列子句

Stream 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 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 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 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);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第1章 lambda表达式 0 1.1 为什么要使用lambda表达式 2 1.2 lambda表达式的语法 4 1.3 函数式接口 6 1.4 方法引用 8 1.5 构造器引用 10 1.6 变量作用域 10 1.7 默认方法 14 1.8 接口中的静态方法 17 练习 18 第2章 Stream API 20 2.1 从迭代器到Stream操作 22 2.2 创建Stream 23 2.3 filter、map和flatMap方法 25 2.4 提取子流和组合流 26 2.5 有状态的转换 27 2.6 简单的聚合方法 28 2.7 Optional类型 29 2.7.1 使用Optional值 29 2.7.2 创建可选值 30 2.7.3 使用flatMap来组合可选值函数 31 2.8 聚合操作 32 2.9 收集结果 33 2.10 将结果收集到Map中 35 2.11 分组和分片 37 2.12 原始类型流 40 2.13 并行流 42 2.14 函数式接口 44 练习 45 第3章使用lambda编程 48 3.1 延迟执行 50 3.2 lambda表达式的参数 51 3.3 选择一个函数式接口 52 3.4 返回函数 55 3.5 组合 56 3.6 延迟 58 3.7 并行操作 59 3.8 处理异常 60 3.9 lambda表达式和泛型 63 3.10 一元操作 65 练习 67 第4章 JavaFX 72 4.1 Java GUI编程简史 74 4.2 你好,JavaFX! 75 4.3 事件处理 76 4.4 JavaFX属性 77 4.5 绑定 80 4.6 布局 85 4.7 FXML 91 4.8 CSS 95 4.9 动画和特殊效果 97 4.10 不寻常的控件 100 练习 103 第5章新的日期和时间API 106 5.1 时间线 108 5.2 本地日期 110 5.3 日期校正器 113 5.4 本地时间 114 5.5 带时区的时间 115 5.6 格式化和解析 119 5.7 与遗留代码互操作 122 练习 123 第6章并发增强 126 6.1 原子值 128 6.2 ConcurrentHashMap改进 131 6.2.1 更新值 132 6.2.2 批量数据操作 134 6.2.3 Set视图 136 6.3 并行数组操作 137 6.4 可完成的Future 138 6.4.1 Future 138 6.4.2 编写Future 139 6.4.3 Future流水线 139 6.4.4 编写异步操作 141 练习 143 第7章 JavaScript引擎——Nashorn 146 7.1 从命令行运行Nashorn 148 7.2 从Java运行Nashorn 149 7.3 调用方法 150 7.4 构造对象 151 7.5 字符串 153 7.6 数字 153 7.7 使用数组 154 7.8 列表和映射 155 7.9 lambda表达式 156 7.10 继承Java类及实现Java接口 157 7.11 异常 158 7.12 Shell脚本 159 7.12.1 执行Shell命令 159 7.12.2 字符串插值 160 7.12.3 脚本输入 161 7.13 Nashorn和JavaFX 162 练习 164 第8章杂项改进 166 8.1 字符串 168 8.2 数字类 168 8.3 新的数学函数 169 8.4 集合 170 8.4.1 集合类中添加的方法 170 8.4.2 比较器 171 8.4.3 Collections类 173 8.5 使用文件 173 8.5.1 读取文件行的流 173 8.5.2 遍历目录项的流 175 8.5.3 Base64编码 176 8.6 注解 177 8.6.1 可重复的注解 177 8.6.2 可用于类型的注解 179 8.6.3 方法参数反射 181 8.7 其他一些细微的改进 182 8.7.1 Null检查 182 8.7.2 延迟消息 182 8.7.3 正则表达式 183 8.7.4 语言环境 183 8.7.5 JDBC 185 练习 185 第9章你可能错过的Java 7特性 188 9.1 异常处理改进 190 9.1.1 try-with-resources语句 190 9.1.2 忽略异常 191 9.1.3 捕获多个异常 192 9.1.4 更简单地处理反射方法的异常 193 9.2 使用文件 193 9.2.1 Path 194 9.2.2 读取和写入文件 196 9.2.3 创建文件和目录 197 9.2.4

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值