版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csdnchen666666/article/details/82252896
-
为什么会有这篇文章?
同事打印了一下System.out.println(001000);结果输出了512,开始的时候很不能理解为什么会输出这个数,后来百度了一下才知道其实这是一个低级问题,因为0开头的系统会认为这个是一个八进制数,接着看到了jdk1.7的新特性,支持了二进制的表示方式。下面整理一些1.7的新特性。 -
jdk1.7的新特性主要内容:
- 在switch中使用String,在1.7以前只支持byte,short,int,char,enum。使用方式和使用byte,short那些一样,就不举例子了。
- try-with-resources,之前使用的很多IO操作都需要手动去关闭流,现在使用这种方式,只要是实现了java.lang.AutoCloseable和java.io.Closeable的类就不需要再手动关闭了。
例子:try(OutputStream out=new FileOutputStream("/home/a.txt")){}
如果是使用了多个需要关闭的流可以在括号中加入";"然后接在后面继续声明,声明时需要注意顺序,先声明的后关闭 - 捕获多个异常,之前捕获的每个异常都需要写一次catch,现在只需要一次catch
例子:catch(IllegalArgumentException | IllegalAccessException e){} - 泛型实例化类型自动推断,例子看看就明白,在之前后面的泛型必须写,现在不需要了
例子:List<String> list=new ArrayList<>(); - 增加二进制表示
int a=123;//十进制
int b=0123;//八进制
int c=0x123;//十六进制
int d=0b101;//二进制(1.7新增) - 数字中可以添加分隔符,编译的时候回自动去掉下划线
例子:int a=1000_000_000;
-
总结
jdk1.7在2011年就发布了,这些特性作为一个java开发者到现在还不知道,感觉很惭愧,以后要多关注java版本的更新,新特性提供给我们的都会是更好的性能,更便捷的操作,应该在开发中多使用。