项目"/>
java7-coin项目
2019独角兽企业重金招聘Python工程师标准>>>
coin项目:
1. try-with-resource结构--可自动关闭资源。相比于之前需要调用close()方法才可关闭。
2. switch中添加了字符串支持。
3. 改变了数字常量的展示。现在可以更好的理解一串数字。使用_
4. multi-catch 在一个catch块中可以声明多个要捕获的异常。
5. 钻石语法。 优化泛型处理过程
1. switch语句中的String
JAVA6之前,case语句中的常量只能是bytes char short 和int,也可以是其对应的封装类Byte Character Short Integer 或枚举
JAVA7种新增了String,毕竟String也是常量类型。
2.更强的数值表示法
数字常量(Integer)可以用二进制文本表示
在整数常量中使用下划线
a.二进制文本
举例:JAVA7之前处理二进制,需要基础转换,或者调用parseX
int x = Integer.parseInt("1100110",2)----〉方法调用对性能有影响,需要记住parsex的处理细节。
现在:int x=0b1100110
b.数字中的下划线
Coin项目借鉴了Ruby创意,用下划线_作分隔符。
long textLong=2_123_532_631L;
int bitPattern=0b0001_1100_0011_0100;
3.改善的异常处理
两个改进:multiCatch 和 final
a.multiCatch 使用 |
try{String fileText=getFile(fileName);cfg=verifyConfig(ParseConfig(fileText));}catch(fileNotFoundException | ParserException | ConfigurationException e){system.out.println("``````");}catch(IOException iox){}
b.final 重新抛出异常
java7之前:
try{dothingThrowException();dothingThrowException();}catch(Exception e){}
这样写 真是的抛出异常会被Exception覆盖掉。
java7中:
try{dothingThrowException();dothingThrowException();}catch(final Exception e){}
关键字final表示实际抛出的异常就是运行时遇到的异常。成为final重抛。
4.try-with-resources(TWR)
基本设想是把资源的作用与限定在代码块内,当程序离开这个代码块时,资源自动关闭。
java7之前:要从一个uRL中读取字节流,并把读取到的内容写入到文件(out)中,
InputStream is= null;
try{is=url.openStram();OutputStream out=new FileOutputStream(file);............................}catch(IOException e){}finally{try{out.close();}catch(.....){}}
墨菲定律:任何事情都有可能出错。所以这里会导致文件可能无法打开,无法关闭,无法读写。
java中 --资源自动化管理代码块的基本形式。把资源放在try的圆括号内
try(OutputStream out=new FileOutputStream(file);InputStream is = url.openStream() ){byte[] buf=new byte[4096];int len;while(){.................}}
这种情况下,某些资源可能无法关闭。例如:
try(ObjectInputStream in=new ObjectInputStream(new FileInputStream("someFile.bin"))){............}
要保证trywithresources生效,正确用法:为各个资源声明独立变量。
try(FileInputStream fin=new FileInputStream("somfile.bin");ObjectInputStream in=new ObjectInputStream(fin) ){}
TWR另一个好处是改善了错误跟踪的能力,能够更准确跟踪堆栈异常。JAVA7改进了跟踪堆栈。
拓展:使用TWR,try从句中出现的资源类都必须实现AutoCloseable接口。JAVA7大多数资源类都已经被修改。
5.钻石语法
钻石语法用于:泛型。针对创建泛型定义和实例太过繁琐的问题。
Map<Integer,Map<Stirng,String>> userLists=new HashMap<Integer,Map<Stirng,String>>();
钻石语法省去了后面的 Integer,Map<Stirng,String>
Map<Integer,Map<Stirng,String>> userLists=new HashMap<>();
使用类型推断语法可以省出点空间。
6.简化变参方法的调用
变参方法是指参数列表末尾是数量不定但类型相同的参数方法。
基本上所有出现在末尾的变参都被放到了一个数组中。作为一个参数传入。
这样存在一个java泛型缺陷--不允许创建已知类型的泛型数组。如:
HashMap<String,String>[] arrayhm=new HashMap<>[2];--无法编译通过。
只能这样写:
HashMap<String,String>[] warnHm=new HashMap[2];这样编译器会给一个警告。
java7中把警告性息从使用api的地方移到了定义api的地方。
java7还提供了一个新注解JAVA.lang.safeVarargs通过@safeVarargs对这种方法注解,开发人员就不会在里面进行任何危险操作。
转载于:
更多推荐
java7-coin项目
发布评论