JDK新特性(1.5,1.7,1.8)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/AinUser/article/details/83012120

1.5

1.包装器(自动装箱拆箱)

包装器有Double,Float,Long,Integer,Short,Character和Boolean

自动装箱,只需将该值赋给一个类型包装器引用,java会自动创建一个对象。

自动拆箱,只需将该对象值赋给一个基本类型即可

2.可变长参数

3.泛型

Basic<T>和Basic<E>中T和E只是标志位(语义化为:Type和Element简写或者其他简写),本质上是可以使用A,B任意替换

泛型中? super T和? extends T的区别

<? super T>表示包括T在内的任何T的父类,<? extends T>表示包括T在内的任何T的子类(具体请自行查阅)

1)泛型使用(创建List中仅可以存放指定string类型数据)

2)?通配符

下面这句代码,我赶脚很有深度和使用意义(泛型:仅仅是类型的限制,不包含任何实际意义)

4.foreach(增强for)

5.静态引入(本类中调用其他类中中所有静态成员->[格式:import static 包名.类名.静态的成员;])

1.7

1.switch可以使用String

2.类型自动推断

// Pre-JDK 7

List<String> lst1 = new ArrayList<String>();

// JDK 7

List<String> lst2 = new ArrayList<>();

3.对Java集合(Collections)的增强支持

关于jdk1.7中集合新特性无法使用的问题->此特性纯属无稽之谈(经测试,无效) 
4.一个catch可以写多个异常类型
try {  ......  } catch(ClassNotFoundException | SQLException ex) {

     ex.printStackTrace();

}

1.8

1.Lambda 表达式

格式:左侧参数 -> 右侧函数体

语法格式一:无参数,无返回值
()->System.out.println(“Hello Lambda!”);

语法格式二:lambda表达式的参数列表的数据类型可以省略不写,因为JVM编译器通过类型推断

(x , y) -> Integer.compare(x, y);

语法格式三:若只有一个参数,()可以省略不写

x->System.out.println(“Hello Lambda!”);

2.函数式接口(方法形参可以是接口)

类似于如下结构

1)接口@FunctionalInterface注解修饰

2)有且仅有一个抽象方法(Object的public方法除外),但是可以有多个非抽象方法的接口,如果需要多个抽象方法(default关键字)

为什么这么麻烦来调整interface接口呢?肯定有很大的好处的

函数式接口的一大特性:可以lambda表达式和函数引用表达式代替。也就是说声明这样的接口,是可以灵活的以方法来传参

Java8 内置的四大核心函数式接口

1)断言式接口predicate(过滤数组

2)Function:函数式接口(处理字符串)

3)Supplier:供给型接口

4)Consumer:消费型接口

3.方法引用 [::] (个人感觉::就相当于方法调用的.

如下图所示 

()->{System.out::println("方法调用")};    //本句只是提供演示意思并不可以单独运行

4.STREAM

参考:http://www.runoob.com/java/java8-streams.html

猜你喜欢

转载自blog.csdn.net/AinUser/article/details/83012120