java新特性

原创 2015年07月08日 10:45:35

Java7语法新特性

1. switch中增加对String类型的支持。
  1. switch (gender) {  
  2.        case "男":  
  3.            title = name + " 先生";  
  4.            break
编译器在编译时先做处理: 
①case只有一种情况,直接转成if; 
②如果只有一个case和default,则直接转换为if...else...; 
③有多个case,先将String转换为hashCode,然后对应的进行处理,JavaCode在底层兼容Java7以前版本。

2. 数字字面量的改进 
①增加二进制表示 
Java7前支持十进制(123)、八进制(0123)、十六进制(0X12AB) 
Java7增加二进制表示(0B11110001、0b11110001) 
②数字中可添加分隔符 
Java7中支持在数字量中间增加'_'作为分隔符,更直观,如(12_123_456),下划线只能在数字中间,编译时编译器自动删除数字中的下划线

②catch子句可以同时捕获多个异常 
  1.  try {  
  2.         Integer.parseInt("Hello");  
  3.     }  
  4.     catch (NumberFormatException | RuntimeException e) {  //使用'|'分割,多个类型,一个对象e  
  5.          
  6.     }
③try-with-resources语句 
Java7之前需要在finally中关闭socket、文件、数据库连接等资源; 
Java7中在try语句中申请资源,实现资源的自动释放(资源类必须实现java.lang.AutoCloseable接口,一般的文件、数据库连接等均已实现该接口,close方法将被自动调用)。 
  1. try ( InputStream input = new FileInputStream(fromPath);  
  2.     OutputStream output = new FileOutputStream(toPath) ) {  
  3.          byte[] buffer = new byte[8192];  
  4.          int len = -1;  
  5.          while( (len=input.read(buffer))!=-1 ) {  
  6.              output.write(buffer, 0, len);  
  7.          }  
  8.      } 

 二、“<>”类型推断运算符

Java5.x新增了许多新的功能,在这些新引入的功能中,泛型最为重要。泛型是一种新的语法元素,泛型的出现导致整个Java API都发生了变化(比如:Java集合框架就使用了泛型语法)。

在泛型没有出现之前,我们都是将Object类作为通用的任意数据类型使用。因为在Java语言中,Object类是所有类的超类。但是使用Object类作为任意数据类型并不是安全的,因为在很多时候我们需要将Object类型向下转换,在这些转换过程中偶尔也可能出现不匹配的类型转换错误。泛型的出现则很好的解决了Object类型所存在的安全性问题,且泛型还扩展了代码的重用性。

泛型的核心概念就是参数化类型,所谓参数化类型指的就是开发人员可以在外部指定的数据类型来创建泛型类、泛型接口和泛型方法。

使用泛型类型示例:

Java代码  
  1. List<String> list = new ArrayList<String>();  
List<String> list = new ArrayList<String>();

  

通过上述程序示例我们可以看出,笔者定义了一个泛型类型为String的List集合。这样一来List集合的泛型参数将会被定义为String类型。但是你有没有想过,使用里氏替换原则或者实例化泛型类型时,其实现可以简化泛型类型声明吗?答案是肯定的,在Java7.x中,允许使用运算符“<>”来做类型推断。也就是说你只需要在声明时标注泛型类型,实现时无需重复标注。

使用“<>”类型推断运算符简化泛型语法:

Java代码  
  1. List<String> list = new ArrayList<>();  
List<String> list = new ArrayList<>();

Java8语法新特性

1.lambda 表达式
  为了解决下面的这些缺点

使用例子:

2. stream 接口


使用例子:.forEach()//循环
使用过滤器来查找元素:.filter()//设置过滤条件
 性别为女的所有数据。

3. DoubleStream 接口使用
实例:查找people中姓名包含菲字的所有人的平均身高:

4.LocalDate 类
   说明:localdate类使用iso日历表示年月日
常用方法:
LocalTime 类
常用方法:


5.DateTimeFormatter类
6.ZonedDateTime类

Java 9 新特性快速预览

Java 8 已经出来三年多的时间了,原本计划2016年七月份release Java 9,但是基于种种原因,Java 9 被推迟到了2017年的3月份,本人也在Open JDK的官网上看到了Java...
  • wangwenjun69
  • wangwenjun69
  • 2016年12月11日 13:22
  • 50633

Java 8的新特性—终极版

前言: Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级。在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java ...
  • yczz
  • yczz
  • 2016年03月15日 15:38
  • 48402

java5、java6、java7、java8的新特性

Java5: 1、泛型 Generics:         引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处。         Parame...
  • samjustin1
  • samjustin1
  • 2016年08月21日 16:36
  • 12484

jdk1.5、1.6、1.7新特性详细介绍(整理)

jdk1.5新特性 1.泛型 2.foreach 3.自动拆箱装箱 4.枚举 5.静态导入(Static import) 6.元数据(Metadata) 7.线程池 8.Java ...
  • wlanye
  • wlanye
  • 2016年07月19日 12:58
  • 6068

JDK1.7和1.8新特性梳理备忘

JDK 1.7和1.8新特性
  • Vi_error
  • Vi_error
  • 2017年05月09日 23:19
  • 333

JDK1.8 十大新特性详解

转自:http://www.jb51.net/article/48304.htm 本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,...
  • haiyoung
  • haiyoung
  • 2016年09月28日 19:44
  • 14245

Java SE 8.0 新增特性

Java SE 8.0 新增特性 根据骨文官方网站,就Java SE 8.0与Java SE 7.0间差别进行介绍。...
  • u012928324
  • u012928324
  • 2017年03月09日 22:11
  • 428

java7 新特性 总结版

Java7语法新特性:前言,这是大部分的特性,但还有一些没有写进去,比如多核 并行计算的支持加强 fork join 框架;这方面并没有真正写过和了解。也就不写进来了。1. switch中增加对Str...
  • hjm4702192
  • hjm4702192
  • 2014年06月11日 17:40
  • 4165

Java10新特性前瞻

从Java 9发布到现在已经过去两个月了,根据最新的发布计划,距离下一个Java版本发布只有四个月时间。Java 10的新特性还在确认当中,所以从现在到GA版中间还是有可能加入重大的变更。不管怎样,在...
  • henry115
  • henry115
  • 2017年11月27日 14:40
  • 1375

Java7的那些新特性

本文介绍的java 7新特性更多的感觉像是语法糖。毕竟java本身已经比较完善了,不完善的很多比较难实现或者是依赖于某些底层(例如操作系统)的功能。不过java7也实现了类似aio的强大功能。但本文并...
  • chenleixing
  • chenleixing
  • 2015年08月20日 08:50
  • 5464
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java新特性
举报原因:
原因补充:

(最多只允许输入30个字)