Java9
模块化系统
不同模块下的不同包可以进行相互调用。需要在包下创建modile-info.java
需要暴露包则在自己的modile-info.java写入
exports 包名
需要调用包则在自己的modile-info.java写入
requires 模块名
REPL工具
jShell:像Python和Scala之类的语言早就有交互式编程环境REPL(read - evaluate - print -loop)了,以交互式的方式对语句和表达式进行求值。开发者只需要输入一些代码,就可以在编译前获得对程序的反馈。而之前的Java版本要想执行代码,必须创建文件、声明类、提供测试方法方可实现。
接口中允许声明私有方法
钻石操作符使用升级
我们将能够与匿名实现类共同使用钻石操作符(diamond operator)在Java 8中如下的操作是会报错的
Comparator<Object>com = new Comparator<>(){
@Override
public int compare(Object o1,Object o2){
return o;
}
};
try语法升级
Java8中,可以实现资源的自动关闭,但是要求执行后必须关闭的所有资源必
须在try子句中初始化,否则编译不通过。如下例所示:
try(InputStreamReader reader = new InputStreamReader(System.in)){
//读取数据细节省略
}catch(IOException e){
e.printStackTrace();
}
创建只读集合
.of操作
public class test{
public static void main(String[] args) throws Exception {
List<Integer> list = List.of(1,2,3);
list.add(3);
}
}
InputStream新方法:tranferTo()
public class test{
public static void main(String[] args) throws Exception {
try(FileInputStream fileInputStream = new FileInputStream("test.txt");
FileOutputStream fileOutputStream = new FileOutputStream("test1.txt")){
fileInputStream.transferTo(fileOutputStream);
}catch (IOException e){
e.printStackTrace();
}
}
}
增强型stream API
Java10
局部变量的类型推断
public class test{
public static void main(String[] args) throws Exception {
var number = 10;
var list = new ArrayList<Integer>;
list.add(2);
for (var n : list){
System.out.println(n);
}
}
}
集合中新增copyof()
copyOf于(Xxx coll):如果参数coll本身就是一个只读集合,则copyof()返回值即为当前的coll,如果参数coll不是一个只读集合,则copyof()返回一个新的集合,这个集合是只读的。
Java11
新增字符串处理方法
optional增强
or和orelse的区别:
or返还的是一个Optional,而orelse返回的是values
局部变量类型推断升级
Consumer<String> consumer = (@Deprecated var t) -> System.out.println(t.toUpperCase());
Httpclient
public class test{
public static void main(String[] args) throws Exception {
HttpClient httpClient = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create("https://www.baidu.com")).build();
HttpResponse.BodyHandler<String> responseBodyHandler = HttpResponse.BodyHandlers.ofString();
HttpResponse<String> response = httpClient.send(request, responseBodyHandler);
String body = response.body();
System.out.println(body);
}
}