JDK 1.5 - 1.8 各版本的新特性总结

JDK1.5新特性:

    1.自动装箱与拆箱
自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。
自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法。
自动装箱,只需将该值赋给一个类型包装器引用,java会自动创建一个对象。
自动拆箱,只需将该对象值赋给一个基本类型即可。
java——类的包装器
类型包装器有:Double,Float,Long,Integer,Short,Character和Boolean
 
2.枚举
把集合里的对象元素一个一个提取出来。枚举类型使代码更具可读性,理解清晰,易于维护。枚举类型是强类型的,从而保证了系统安全性。而以类的静态字段实现的类似替代模型,不具有枚举的简单性和类型安全性。
简单的用法:JavaEnum简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。
复杂用法:Java为枚举类型提供了一些内置的方法,同事枚举常量还可以有自己的方法。可以很方便的遍历枚举对象。
 
3.静态导入
通过使用 import static,就可以不用指定 Constants 类名而直接使用静态成员,包括静态方法。
import xxxx 和 import static xxxx的区别是前者一般导入的是类文件如import java.util.Scanner;后者一般是导入静态的方法,import static java.lang.System.out。
 
4.可变参数(Varargs)
 
可变参数的简单语法格式为:
methodName([argumentList], dataType...argumentName);
 
5.内省(Introspector)
 
是 Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新 的值。通过getName/setName来访问name属性,这就是默认的规则。Java中提供了一套API用来访问某个属性的getter /setter方法,通过这些API可以使你不需要了解这个规则(但你最好还是要搞清楚),这些API存放于包java.beans中。
一 般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器 (PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来 调用这些方法。
 
6.泛型(Generic) 
 
C++ 通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也 不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。
 
7.For-Each循环 
 

For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。


1.6使用Compiler API :

    JDK6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。

    Compiler API通过一套易用的标准的API提供了更加丰富的方式去做动态编译,而且是跨平台的。

 

1.7新特性:

1.switch中可以使用字串

    

2."<>"这个玩意儿的运用

ListtempList = new ArrayList<>(); 即泛型实例化类型自动推断。

 

3.自定义自动关闭类

 

interface AutoCloseable
只要实现该接口,在该类对象销毁时自动调用close方法,你可以在close方法关闭你想关闭的资源

 

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

  1. List<String> list=["item"]; //向List集合中添加元素

  2.      String item=list[0]; //从List集合中获取元素

  3.      Set<String> set={"item"}; //向Set集合对象中添加元素

  4.      Map<String,Integer> map={"key":1}; //向Map集合中添加对象

  5.      int value=map["key"]; //从Map集合中获取对象

 

5.数值可加下划线

int one_million = 1_000_000;

6.支持二进制文字

int binary = 0b1001_1001;

7.在try catch异常扑捉中,一个catch可以写多个异常类型,用"|"隔开

try {

......

} catch(ClassNotFoundException|SQLException ex) {

  ex.printStackTrace();

}

8.jdk7之前,你必须用try{}finally{}在try内使用资源,在finally中关闭资源,不管try中的代码是否正常退出或者异常退出。jdk7之后,你可以不必要写finally语句来关闭资源,只要你在try()的括号内部定义要使用的资源

  1. public class FileCopyJDK7 {

  2.   public static void main(String[] args) {

  3.      try (BufferedReader in  = new BufferedReader(new FileReader("in.txt"));

  4.           BufferedWriter out = new BufferedWriter(new FileWriter("out.txt"))) {

  5.         int charRead;

  6.         while ((charRead = in.read()) != -1) {

  7.            System.out.printf("%c ", (char)charRead);

  8.            out.write(charRead);

  9.         }

  10.      } catch (IOException ex) {

  11.         ex.printStackTrace();

  12.      }

  13.   }

  14. }

 

1.8新特性:

1.接口的默认方法

  1. interface Formula {

  2.    double calculate(int a);

  3.    default double sqrt(int a) {

  4.        return Math.sqrt(a);

  5.    }

  6. }

 

2.Lambda 表达式

3.函数式接口


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒙奇·D·路飞-

感谢老板您就是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值