前言
从3月14日Android Developers在Google+上发布的文章来说,Android要支持Java8了。当时说的是在新版的Android Studio中提供支持,并且是in the coming weeks.想着肯定是2.4了,果然2.4pre版就发了。然而等了一个月正式版还是不见发布,估摸着要在I/O大会上发布了也不一定(然额,I/O上说要发布3.0版本了。。。)。7.0发布的时候就支持Java8 了,然而也就是观望了观望,一直也没用Java8开发过,由于需要useJack,又面向Android7.0,所以没在实际开发中用过,既然Studio开始支持Java8了,构建当然简单多了,翻了翻去年整理的东西,在这里瞅一瞅,说不定就快要用上了。
相信近年来学习Java的应该都是以Java5.0为基础学习的,那么后来Java6、7、8发生了什么,以及快要发布的Java9有些什么特性呢?来瞅一瞅。当然,Java9今天没打算说,毕竟暂时肯定用不上。
Java6
恩,这是个无所谓的东东。
主要是内部的一些更新:
- 引入了一个支持脚本引擎的新框架
- UI的增强
- 对WebService支持的增强(JAX-WS2.0和JAXB2.0)
- 一系列新的安全相关的增强
- JDBC4.0
- Compiler API
- 通用的Annotations支持
Java7
- switch中可以使用字符串了
Java7之前switch不能对字符串操作是个很麻烦的事,于是乎,支持了。 - 泛型实例化类型自动推断
List<String> tempList = new ArrayList<>();
这在Android Studio里应该很常见了,右侧的尖括号中不用写泛型类型了。 - 数值可加下划线:
int one_million = 1_000_000;
数字加上下划线方便阅读。 - 支持二进制文字
int binary = 0b1001_1001;
在try catch异常扑捉中,一个catch可以写多个异常类型,用”|”隔开:
try { ... } catch(ClassNotFoundException | SQLException ex){ ex.printStackTrace(); }
jdk7之前,你必须用finally{}在try内使用资源,在finally中关闭资源,不管try中的代码是否正常退出或者异常退出。
jdk7之后,你可以不必要写finally语句来关闭资源,只要你在try()的括号内部定义要使用的资源。try (BufferedReader in = new BufferedReader(new FileReader("in.txt")); BufferedWriter out = new BufferedWriter(new FileWriter("out.txt"))) { int charRead; while ((charRead = in.read()) != -1) { System.out.printf("%c ", (char)charRead); out.write(charRead); } } catch (IOException ex) { ex.printStackTrace(); }
注意:需添加@TargetApi(Build.VERSION_CODES.KITKAT)—19
自动关闭类
public interface AutoCloseable { / * * Closes this resource, relinquishing any underlying resources. * This method is invoked automatically on objects managed by the * { @code try}-with-resources statement. * */ void close() throws Exception; }
只要实现该接口,在该类对象销毁时自动调用close方法,你可以在close方法关