语法新特性
1.Switch使用字符串,之前只能使用与整数兼容的类型
swicth(str){
case “男”:
sex =“先生”;
}
2.数字字面量改进
int i = 500_000_000; 使用下划线分割,只能放在数字之间
int i = 0b101; 用0b表示二进制
3.优化的异常处理
try{}
catch(ExceptionA | ExceptionB e){ 不能出现重复的异常,一个异常不能是另一个的子异常
}
4.try-with-resource
资源分为内存资源及非内存资源,流处理、数据库连接等JVM自动回收不了,所以需要手动释放资源。
进行资源管理 使代码简洁,紧凑,需要实现AutoCloseable接口
5.优化可变参数的方法调用可以用数组传递可变参数
public void fn(int ...args){ }
int []arr = {1,2,7,5};
fn(arr);
语言的动态性
1.脚本语言的支持
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("javascript");
执行脚本功能、实现java与脚本的交互使用
2.反射API
Class存储了对象的所有的信息,获取Class的后,就能获取到对象的方法、变量等信息
3.动态代理(安全性、信息过滤处理)
代理模式:代理类、委托类
静态代理中:每一个代理类只能为一个接口服务,这样一来程序开发中必然会产生过多的代理
Cglib(Code Generation Library) 是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java
类与实现Java接口JDK的动态代理有一个限制,就是使用动态代理的对象必须实现一个或多个接口,若没实现接口,需要用Cglib
4.动态语言支持
Groovy,JavaScript,Scala等满足Class格式,JVM语法格式
Java I/O
1.字节、字符输入输出流
InputStreamReader字符字节转换流
过滤流:封装底层流,增强功能
缓冲流:BufferedReader 带缓冲区
DataInputStrem数据流支持各种数据类型
2.缓冲区
内存中开辟的一段区间,用来解决内存设备与外部设备数据交互速度慢、效率低的问题
3.通道 是可异步的,非阻塞的
4.NIO2
Path、文件访问
java7其它更新
1.数据库方面的改进
Connection,Statement等实现了AutoCloseable接口,可使用try-with-resource
使用schema来区分表、视图
数据库连接超时与终止 setNetworkTimeout abort
RowSet实现提供者 强RowSet按照JavaBeans来处理
2.Objects使用
提供了比较器比较
3.国际化Unicode方面的更新,图形界面的更新,正则表达式的改进进行空判断