Java7新特性

时间:2024-01-30 21:44:54

二进制字面量

jdk7开始,终于可以用二进制来表示整数(byte,short,int和long)。
使用二进制字面量的好处是,可以使代码更容易被理解。语法非常简单,
只要在二进制数值前面加0b或0B
举例:int x=0B110110

数字字面量可以出现下划线

为了增强对数值的阅读性,如我们经常把数据用逗号分隔一样,JK7提供了_对数值分隔。
举例:int x=1_000;
注意事件:
    不能出现在进制标识和数值之间
    不能出现在数值开头和结尾
    不能出现在小数点旁边

switch语句可以用字符串

	String value="吕世昊";
	switch (value) {
		case "吕世昊":
			System.out.println("嗯嗯他是人才");
			break;
		default:
			System.out.println("嗯嗯他是不人才");
			break;
	}

泛型简化

	//后面的泛型类型可以不需要写,这叫泛型推断,也可以叫菱形泛型
	ArrayList<String> arrayList=new ArrayList<>();

异常的多个catch合并

Java 7之前的版本:
如果用一个catch块处理多个异常,可以用管道符(|)将它们分开,在这种情况下异常参数变量(ex)是定义为final的,所以不能被修改。这一特性将生成更少的字节码并减少代码冗余。
Java 7之前的版本:
	catch (IOException ex) {
		logger.error(ex);
 		throw new MyException(ex.getMessage());
	catch (SQLException ex) {
		 logger.error(ex);
		 throw new MyException(ex.getMessage());
	}catch (Exception ex) {
		 logger.error(ex);
		 throw new MyException(ex.getMessage());
	}
在Java 7中,我们可以用一个catch块捕获所有这些异常:
	catch(IOException | SQLException | Exception ex){
		 logger.error(ex);
		 throw new MyException(ex.getMessage());
	}

try-with-resources语句

格式:try(必须是java.lang.AutoCloseable的子类对象){...}
好处:
	资源自动释放,不需要close()了
	把需要关闭资源的部分都定义在这里就ok了
	主要是沉体系的对象是这个接口的子类(看JDK7的API)

/**
* 个性签名:今天的努力只要对得起自己就满足了
* 创建人:吕世昊  
* 创建时间:2019年3月22日 下午1:48:41   
* @version
 */
public class Test3 implements AutoCloseable{
	public static void main(String[] args)  {
		//1.7之后,只要实现了AutoCloseable接口
		try(Test3 test=new Test3()){
		System.out.println("--执行main方法--");
		System.out.println(1/0);
		}catch (Exception e) {
		System.out.println("--exception--");
		}
		System.out.println("-------------------");
		//JDK1.7之前,释放资源方式
		try {
		System.out.println("--执行main方法--");
		System.out.println(1/0);
		} catch (Exception e) {
		System.out.println("--exception--");
		}finally {
		System.out.println("--close--");
		}
	}

	@Override
	public void close() throws Exception {
		// TODO Auto-generated method stub
		System.out.println("close");
	}
}