java各版本特性

http://www.dataguru.cn/thread-340510-1-1.html

JDK1.4新特性:

  • NIO

JDK1.5新特性:

  • 自动装箱与拆箱

自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法。 自动装箱,只需将该值赋给一个类型包装器引用,java会自动创建一个对象。 自动拆箱,只需将该对象值赋给一个基本类型即可。 java——类的包装器 类型包装器有:Double,Float,Long,Integer,Short,Character和Boolean

  • 静态导入

    通过使用 import static,就可以不用指定 Constants 类名而直接使用静态成员,包括静态方法。 import xxxx 和 import static xxxx的区别是前者一般导入的是类文件如import java.util.Scanner;后者一般是导入静态的方法,import static java.lang.System.out。

  • 枚举类

  • 泛型(Generic)
  • For-Each循环
  • 可变参数;

JDK 1.6新特性

  • 对脚本语言的支持如: ruby, groovy, javascript.
  • 可插拔注解;

JDK 1.7 新特性

  • 在Switch中可用String

在之前的版本中是不支持在Switch语句块中用String类型的数据的,这个功能在C#语言中早已被支持,好在JDK1.7中加入了。

  • 数值可加下划线

    例如:int one_million = 1_000_000;

  • 支持二进制文字

    int binary = 0b1001_1001;

jAVA8

  • Lambda 表达式
  • 函数式接口

    过在接口里面添加一个抽象方法,这些方法可以直接从接口中运行。如果一个接口定义个唯一一个抽象方法,那么这个接口就成为函数式接口。同时,引入了一个新的注解:@FunctionalInterface。可以把他它放在一个接口前,表示这个接口是一个函数式接口。这个注解是非必须的,只要接口只包含一个方法的接口,虚拟机会自动判断,不过最好在接口上使用注解 @FunctionalInterface 进行声明。在接口中添加了 @FunctionalInterface 的接口,只允许有一个抽象方法,否则编译器也会报错。

    @FunctionalInterface
    public interface Runnable {
    public abstract void run();
    }
    
  • 接口的增强

Java 8 对接口做了进一步的增强。在接口中可以添加使用 default 关键字修饰的非抽象方法。还可以在接口中定义静态方法。如今,接口看上去与抽象类的功能越来越类似了。

默认方法

Java 8 还允许我们给接口添加一个非抽象的方法实现,只需要使用 default 关键字即可,这个特征又叫做扩展方法。在实现该接口时,该默认扩展方法在子类上可以直接使用,它的使用方式类似于抽象类中非抽象成员方法。但扩展方法不能够重载 Object 中的方法。例如:toString、equals、 hashCode 不能在接口中被重载。 例如,下面接口中定义了一个默认方法 count(),该方法可以在子类中直接使用。

public interface DefaultFunInterface {
//定义默认方法 count
default int count(){
return 1;
}
}
public class SubDefaultFunClass implements DefaultFunInterface {
public static void main(String[] args){
//实例化一个子类对象,改子类对象可以直接调用父接口中的默认方法 count
 SubDefaultFunClass sub = new SubDefaultFunClass();
sub.count();
}
}

静态方法

在接口中,还允许定义静态的方法。接口中的静态方法可以直接用接口来调用。 例如,下面接口中定义了一个静态方法 find,该方法可以直接用 StaticFunInterface .find() 来调用。

public interface StaticFunInterface {
public static int find(){
return 1;
}
}
public class TestStaticFun {
public static void main(String[] args){
//接口中定义了静态方法 find 直接被调用
StaticFunInterface.fine();
}
}
  • 全球化功能

支持新的 Unicode 6.2.0 标准,新增了日历和本地化的 API,改进了日期时间的管理等。

新的 java.time 中包含了所有关于时钟(Clock),本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration)的类。历史悠久的 Date 类新增了 toInstant() 方法,用于把 Date 转换成新的表示形式。这些新增的本地化时间日期 API 大大简化了了日期时间和本地化的管理。

  • IO/NIO 的改进

增加了一些新的 IO/NIO 方法,使用这些方法可以从文件或者输入流中获取流(java.util.stream.Stream),通过对流的操作,可以简化文本行处理、目录遍历和文件查找。

  • 集合之流式操作

Java 8 引入了流式操作(Stream),通过该操作可以实现对集合(Collection)的并行处理和函数式操作。根据操作返回的结果不同,流式操作分为中间操作和最终操作两种。最终操作返回一特定类型的结果,而中间操作返回流本身,这样就可以将多个操作依次串联起来。根据流的并发性,流又可以分为串行和并行两种。流式操作实现了集合的过滤、排序、映射等功能。

Stream 和 Collection 集合的区别:Collection 是一种静态的内存数据结构,而 Stream 是有关计算的。前者是主要面向内存,存储在内存中,后者主要是面向 CPU,通过 CPU 实现计算。

  • 安全性

支持更强的基于密码的加密算法。

  • 注解的更新

results matching ""

    No results matching ""