java 7 语言新特性
- switch 语句支持字符串,编辑器层面的修改,将字符串变为hashcode,并加入equals判断逻辑保证逻辑正确性(hashcode值有时会冲突)
- 二进制整数字面量
0b开头 代表二进制
0x开头 代表十六进制
0 开头代表八进制
public void read(String fileName) throws BaseException{
FileInputStream input = null;
IOException readException = null;
try {
input = new FileInputStream(fileName);
}catch (IOException e){
readException = e;
}finally {
if(input!=null){
try{
input.close();
}catch (IOException ex){
if(readException ==null){
readException = ex;
}
}
}
if(readException!=null){
throw new BaseException(readException);
}
}
}
public void read2(String fileName) throws IOException{
FileInputStream input = null;
IOException readException = null;
try {
input = new FileInputStream(fileName);
}catch (IOException e){
readException = e;
}finally {
if(input!=null){
try{
input.close();
}catch (IOException ex){
if(readException !=null){
readException.addSuppressed(ex);
}else{
readException = ex;
}
}
}
if(readException!=null){
throw new IOException(readException);
}
}
}
}
- catch多个异常的时候,用"|"隔开的异常,最好不要出现其中一个是另外一个的子类,否则会出现编译错误
- try-with-resource语句,能保证资源被自动回收
public String readFile(String path) throws IOException {
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(path))) {
StringBuilder builder = new StringBuilder();
String line = null;
while((line=bufferedReader.readLine())!=null){
builder.append(line);
builder.append(String.format("%n"));
}
return builder.toString();
}
}
- 变长参数的方法调用,使用泛型的变长参数方法产生编译器参数警告
@SafeVarargs
public static <T> T useVarargs(T...args){
return args.length>0?args[0]:null;
}