java1.8--OptionalInt,OptionalDouble,OptionalLong类
摘要:OptionalInt,OptionalDouble,OptionalLong类的工作方式与Optional类十分类似,只不过他们是专门操作int,都变了,long类型的值而设计的。因此,他们分别定义了getAsDouble(),getAsInt(),getAsLong()方法,而不是get()...
阅读全文
posted @
2015-10-31 14:17
LinkinPark
阅读(1451)
推荐(0) 编辑
java1.8--Optional类
摘要:身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数。这正是一些类似Guava的外部API试图解决的问题,前面一篇博客我也整理到了Null Objec...
阅读全文
posted @
2015-10-30 18:08
LinkinPark
阅读(630)
推荐(0) 编辑
java1.8--Null Object模式
摘要:整理这篇博客是因为现在在整理java8中的optional,所以觉得很有必要整理下Null Object模式。java.lang.NullPointerException,只要敢自称Java程序员,那对这个异常就再熟悉不过了。为了防止抛出这个异常,我们经常会写出这样的代码: Person per...
阅读全文
posted @
2015-10-30 16:12
LinkinPark
阅读(423)
推荐(0) 编辑
JDK自带的缓存--包装类的缓存
摘要:关于包装类和基本类型的文章我前面已经整理过了,这里大致罗列下重点。我们主要是想研究下包装类的缓存。 1,自动装箱和自动拆箱 java1.5之后就提供了自动装箱和自动拆箱的功能,当然我们也可以手动来装箱和拆箱。 基本类型-->包装类对象:new WrapperClass(primitive),...
阅读全文
posted @
2015-10-27 17:22
LinkinPark
阅读(1550)
推荐(0) 编辑
函数式编程--lambda表达式对比匿名内部类
摘要:从前面的整理中我们看出了,Lambda表达式其实是匿名内部类的一种简化,因此它可以部分取代匿名内部类。 1,Lambda表达式与匿名内部类存在如下相同点: 1),Lambda表达式与匿名内部类一样,都可以直接访问“effectively final”的局部变量,以及外部类的成员变量 2),L...
阅读全文
posted @
2015-10-27 16:00
LinkinPark
阅读(1158)
推荐(0) 编辑
java1.8--改进的接口
摘要:关于接口,每天的编码都在写,就不多说了。这里对比下接口,抽象类,类3者的关系: 1),接口是一种规范,就是告诉外界这个东东可以做什么。 2),抽象类是一种模板,就是告诉外界这个东西的一部分公共功能。 3),类和上面的接口,抽象类最大的区别就是类可以维护状态信息。 在以前的接口中 1,没有构...
阅读全文
posted @
2015-10-27 10:54
LinkinPark
阅读(2243)
推荐(0) 编辑
函数式编程--方法和构造器引用
摘要:前面已经说过了,如果lambda表达式的代码块只有一行代码,可以省略lambda表达式中代码块的花括号,语句后面的逗号也要省去的。不仅如此,如果lambda表达式的代码块只有一行代码,还可以在代码中使用方法引用和构造器引用。 方法引用和构造器引用可以让lambda表达式编码更加简洁,具体语法...
阅读全文
posted @
2015-10-26 15:37
LinkinPark
阅读(409)
推荐(0) 编辑
函数式编程--变量作用域
摘要:1,lambda表达式捕获变量 通常,我们希望能够在lambda表达式的闭合方法或类中访问其他的变量,比如下面的代码: public class Test{ public void test(String text, int count) { Runnable a = () -> { ...
阅读全文
posted @
2015-10-26 09:58
LinkinPark
阅读(326)
推荐(0) 编辑
函数式编程--函数式接口
摘要:Lambda表达式的类型,也被称为目标类型,lambda表达式的目标类型必须是函数式接口。函数式接口代表只包含一个抽象方法的接口。函数式接口可以包含多个默认方法,类方法,当只能声明一个抽象方法。 java8中专门为函数式接口提供了一个@FunctionalInterface注解,该注解通常方法...
阅读全文
posted @
2015-10-23 22:04
LinkinPark
阅读(1634)
推荐(0) 编辑
函数式编程--使用lambda表达式
摘要:前面一篇博客我们已经说到了,lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口的实例。现在我们来写一段java的命令者模式来自己研究下lambda表达式的语法。 这里重复下命令者模式: 考虑这么一个情景,某个方法需要完成一个行为,但是这个行为的具体实现无法确定,必须等到执行该...
阅读全文
posted @
2015-10-23 20:06
LinkinPark
阅读(312)
推荐(0) 编辑
函数式编程--为什么会出现lambda表达式?
摘要:java一直处在发张和演化的过程中,其中有2个版本从根本上改变了代码的编写方式。第一个就是JDK5之后增加的泛型,还有一个就是现在介绍的函数式编程,lambda表达式。 lambda表达式是java8新增的功能,他们明显的增强了java,原因2点: 1),它们增加了新的语法元素,使java语言...
阅读全文
posted @
2015-10-23 16:16
LinkinPark
阅读(1705)
推荐(0) 编辑
java1.8--1.8入门介绍
摘要:在我之前的工作中,一直使用的是java6。所以即使现在java已经到了1.8,对于1.7增加的新特性我也基本没使用的。在整理一系列1.8的新特性的过程中,我也会添加上1.7增加的特性。 下面的整理可能是java7最重要的新特性: 1,String现在能够控制switch语句 2,二进制整型字面...
阅读全文
posted @
2015-10-23 11:13
LinkinPark
阅读(531)
推荐(0) 编辑
java里程碑之泛型--泛型注意的几点
摘要:1,泛型的基本语法:类名 对象名 = new 类名()。类型参数规范如下: 1),K键,比如映射的键,key的类型 2),V值,比如Map的值,value类型 3),E元素,比如Set,Element表示元素,元素的类型 4),T泛型,Type的意思 2,泛型只保存在源文件中,class文件中...
阅读全文
posted @
2015-10-23 10:21
LinkinPark
阅读(364)
推荐(0) 编辑
java里程碑之泛型--擦除和转换
摘要:在严格的泛型代码里,带泛型声明的类总应该带着泛型参数。但是为了和古老的java代码保持一致,也就是说为了向下兼容,也允许在使用带泛型声明的类时不指定实际的类型参数。如果没有为这个泛型类指定实际的参数类型,则该类型参数就被称为rawtype,也就是原始类型。比如说我们声明一个list的时候如果没有...
阅读全文
posted @
2015-10-22 17:35
LinkinPark
阅读(440)
推荐(0) 编辑
java里程碑之泛型--泛型方法
摘要:前面我已经介绍过了,我们可以在定义类和接口的时候使用类型形参,在该类的方法定义中,成员变量定义中,这些类型形参都可以被当成普通类型来使用。但是如果我们在定义类和接口的时候没有使用类型形参,但是在定义方法的时候想自己定义自己的类型形参,这样子也是可以的,这里也就是我们说的泛型方法。 想了解泛型方法...
阅读全文
posted @
2015-10-22 15:32
LinkinPark
阅读(258)
推荐(0) 编辑
java里程碑之泛型--类型通配符
摘要:1,泛型与数组在子类上面的对比 在整理java泛型的类型通配符之前,我们先来研究下java在数组设计上的一个不合理。我们来看下面代码: public class Test{ public static void main(String[] args) { //1。定义一个Integer数组...
阅读全文
posted @
2015-10-22 10:40
LinkinPark
阅读(232)
推荐(0) 编辑
java里程碑之泛型--泛型基本语法
摘要:1,java7提供的泛型菱形语法 在java7之前,如果使用带泛型的接口和类定义变量初始化对象的时候,构造器后面也必须带上泛型,这有点恶心的。以前我在公司一直使用的java6,所以我也已经习惯了这种写法。代码如下: List list = new ArrayList();Map map = n...
阅读全文
posted @
2015-10-20 10:10
LinkinPark
阅读(313)
推荐(0) 编辑
java里程碑之泛型--深入理解泛型
摘要:所谓泛型,就是允许在定义类,接口,方法时使用类型形参,这个类型形参将在声明变量,创建对象,调用方法的时候动态的指定。JAVA5之后修改了集合中所有的接口和类,为这些接口和类都提供了泛型的支持。 关于泛型的底层,我们先来看看一段代码: public class Test{ public stati...
阅读全文
posted @
2015-10-19 17:06
LinkinPark
阅读(208)
推荐(0) 编辑
java里程碑之泛型--使用泛型
摘要:现在重新整理下泛型,前面的整理好多的底层的东西理解不深。泛型很重要的,作为java的一个程碑式的改进,还是很有必要认真的理解下人家的JDK的良苦用心的。 1,什么是泛型?为什么要使用泛型? 一定要记住下面的2句话: 1),保存元素时:泛型解决了元素存储的安全性问题 2),获取元素时:泛型解决...
阅读全文
posted @
2015-10-19 15:48
LinkinPark
阅读(412)
推荐(0) 编辑
常用容器制定初始化容量
摘要:前面在javaSe中我已经整理了相关的一些数据结构,现在就性能方面在这里做一个总结。以后在实际编码中,应该按照这样子来初始化相关的数据结构。 1,StringBuffer和StringBuilder StringBuffer() 构造一个其中不带字符的字符串缓冲区,初始...
阅读全文
posted @
2015-10-16 15:19
LinkinPark
阅读(1032)
推荐(0) 编辑
关键字final整理
摘要:关键字final整理 由于语境(应用环境)不同,final 关键字的含义可能会稍微产生一些差异。但它最一般的意思就是声明“这个东西不能改变”。之所以要禁止改变,可能是考虑到两方面的因素:设计或效率。由于这两个原因颇有些区别,所以也许会造成final 关键字的误用。final 关键字有三种应...
阅读全文
posted @
2015-10-16 11:21
LinkinPark
阅读(177)
推荐(0) 编辑