不管是JAVA,还是.NET.我们常常会看到空异常(NullPointerException).这种异常都是在运行的过程中出现.往往是变量是一个null值.但是你引用这个变量的后继字段或是方法.所以我们代码里面常常会出现if (变量!=null)的相关操作.如果你是一个.NET开发人员的话,那么你一定知道.NET的可以为空的数据类型.同样子java8引入了一个Optional类型,目地是为了决解为空带来的一系列问题.Optional类提供了俩个静态的方法 of方法:创建一个非空的Optional…
到现在为止,笔者不敢给流下定义,从概念来讲他应该也是一种数据元素才是.可是在我们前面的代码例子中我们可以看到他更多的好像在表示他是一组处理数据的行为组合.这让笔者很难去理解他的定义.所以笔者不表态.各位同志自行理解吧.在没有流以前,处理集合里面的数据一般都会用到显示的迭代器.用一下前面学生的例子吧.目标是获得学分大于5的前俩位同学. package com.aomi; import java.util.ArrayList; import java.util.Iterator; import ja…
这此年来我一直从事.NET的开发.对于JAVA我内心深处还是很向往的.当然这并不是说我不喜欢.NET.只是觉得JAVA也许才是笔者最后的归处.MK公司是以.NET起家的.而笔者也因为兄弟的原因转行.NET.虽然有时候还是会拿起JAVA相关的知识回味一下.尽可能的不让自己忘记.但是时代的进步却把我狠狠甩到了后面去.现在笔者终于离开了M公司.我想回去做JAVA,却发现笔者已经跟不上JAVA时候.在笔者转行.NET的时候,JAVA的版本才到 1.6.现在都1.8了.主要的是这个段时间发现很大的变化.所…
一.Optional容器类 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. 查看结构图可以看到有如下常用方法: of(T)——创建一个非空的Optional实例(使用empty创建一个空的Optional实例) ofNullable(T)——若参数不为Null,则创建一个非空实例,否则创建一个空实例 isPresent——是否存在值(存在返回true,否则返回false) orElse(T)——有值则将其返回,否则返回参数…
写在前面 最近,很多读者出去面试都在Java8上栽了跟头,事后自己分析,确实对Java8的新特性一知半解.然而,却在简历显眼的技能部分写着:熟练掌握Java8的各种新特性,能够迅速使用Java8开发高并发应用!这不,又一名读者因为写了熟练掌握Java8的新特性而被面试官虐的体无完肤!我不是说不能写,可以这样写!但是,咱在写熟练掌握Java8新特性的时候,应该静下心来好好想想自己是否真的掌握了Java8.如果自己心中对是否掌握了Java8这个问题模棱两可的话,那确实要好好静下心来为自己充电了!一定…
流,确定是笔者内心很向往的天堂,有他之后JAVA在处理数据就变更加的灵动.加上lambda表达不喜欢都不行.JAVA8也为流在提供另一个功能——并行流.即是有并行流,那么是不是也有顺序流.没有错.我前面操作的一般都是顺序流.在JAVA8里面并行流和顺序流是可以转变的.来看一个例子——笔者打印数字. package com.aomi; import java.util.stream.LongStream; public class Main { public static void main(St…
JAVA8有一个新功能——流.笔者简单的看一下流.然后默默的闭上眼睛.感叹一声:这不是.NET里面的Linq吗?如果你们当中有谁做过.NET程序员的话,对于流的学习其实帮助是很大的.但是要明白你现在是在学JAVA的流.虽然他们的概念是有一点像.可是这也只是对你在理解流上面有一定的帮助.因为JAVA实现的方式却完成不一样子(不入流程序员的个人理解). 好吧.那么流是什么呢?如果用书里面的方式解释的话,笔者可能也看不懂.做过开发的人员一般都会知道一些SQL语句吧,SELECT语句这个功能.相信大家一…
前言 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数.这正是一些类似Guava的外部API试图解决的问题.一些JVM编程语言比如Scala.Ceylon等已经将对在核心API中解决了这个问题. Optional概述 新版本的Java,比如Java 8引入了一个新的Optional类.Optional类的Javadoc描述如下: 这是一个可以为nu…
目录 Optional 一.Optional类是什么? 二.Optional类常用的方法 1. 创建Optional实例 1.1 Optional.of(T) 1.2 Optional.empty() 1.3. Optional.ofNullable(T t) 1.4. 小结 2.访问Optional对象的值 2.1 get()获取值 2.2 isPresent()验证是否有值 2.3 ifPresent() 3. 返回默认值 3.1 orElse(T t) 3.2 orElseGet(Supp…
概述 在Java8之前, 如果需要对一个变量做一次 null 检查, 通常会像下面这样写 T t = service1.query(); if (t != null) { K k = service2.update(t); if (k != null) { U u = service3.save(k); } } 如果业务比较复杂, 可能会像上面那样, 使用 if 语句进行多层嵌套, 后期难以扩展. 在Java8中新引入了一个 Optional 类, Optional 类会对可能为 null 值的…