2024年1月24日发(作者:)
一篇文章带你理解JDK11的新特性@杨章隐
前阵子JAVA推出了最新版本Java11,原本以为特性会和8到9,9到10一样更新一小(没)部(啥)分(变)功(动)能,但是去到官网看了一下,我震惊了,这次更新其实还蛮大,不过总结了一下,相较于之前的版本也就八大特性:
1、变量类型推断
学习过Javascript的都逃不过var这个数据类型,jdk11也加入类似javascript特性,通过定义局部变量var,自动根据右边的表达式推断变量类型。
如:
var text = “Hello World”;
n(text);
其实就等于
String text = “Hello World”;
n(text);
这样的特性虽然在开发流程中提供了一定的便捷性,但是如果开发过程中,开发人员没有一定规范,滥用var类型,或者公司并没有相关的规范,今后的代码可能是满屏幕的var,后期维护会有些许不方便。当然这是我的推断,不排除以后的真香警告!
2、扩展字符串特性功能方法
JDK11增加了一系列的字符串方法,相信这次更新,在处理字符串的问题上会更加方便更加规范。
//定义变量
String text = “Hello World”;
// 判断字符串是否为空
k(); // 返回false
// 去除首尾空格
" Hello World ".strip(); // 返回"Hello World"
// 去除尾部空格
" Hello World ".stripTrailing(); // 返回" Hello World"
// 去除首部空格
" Hello World ".stripLeading(); // 返回"Hello World "
// 复制字符串
"Hello".repeat(3);// 返回"HelloHelloHello"
// 统计行数
"HellonWorld".lines().count(); // 返回2
3、扩展集合特性功能方法
这个其实从JDK9已经有了,集合(List/ Set/ Map)都添加了 of
和 copyOf 方法,他们用来创建不可变的集合。
那么它跟普通集合有什么区别呢?
static
switch () { // implicit null check of elements
case 0:
return ist();
case 1:
return new 12<>(elements[0]);
case 2:
return
default:
return new <>(elements);
}
}
static
return py(coll);
}
static
if (coll instanceof AbstractImmutableList &&
ss() != ) {
new 12<>(elements[0],
elements[1]);
return (List
} else {
return (List
}
}
通过源码我们可以看出,调用copyOf 的方法会首先判断传入集合是否为AbstractImmutableList 类型,是的话直接返回,如果不是会调用of创建一个新的集合对象返回。
所以
var list = new ArrayList
var copy = (list);
if(list == copy)
n(Hello World);
你会发现if(list == copy)为false,因为集合list不属于不可变集合
AbstractImmutableList 类的子类,所以copyOf 方法重新创建了一个新的实例。
注:之所以是不可变集合是因为使用of和copyOf创建的集合,不能进行增,删,改,排序等操作,不然系统会抛出
ortedOperationException 异常。
4、更加简洁的编译和运行。只需一个命令,全部搞定。
以前我们需要:
// 编译
javac
// 运行
java HelloWorld
现在只需要
java
更加简单,简洁。
5、HTTP Client API
其实HTTP Client API早再Java9的时候就已经引入了,在10不断优化更新,最终在此次Java11中正式发布。
包名由改为。HTTP Client API实现了HTTP(1.1和2)和WebSocket,用来取代遗留的LConnection。该API用来在Java程序中作为客户端请求HTTP服务,Java中服务端HTTP的支持由Servlet实现。
HTTP Client API的主要类包括:
ient
quest
sponse
ket
HTTP Client API特性:
对大多数场景提供简单易用的阻塞模型。
通过异步机制支持事件通知。
完整支持HTTP协议的特性。
易于建立WebSocket握手。
支持HTTP/2,包括协议升级(Upgrade)和服务端推送(server
push)。
支持 HTTPS/TLS。
和现有的其他实现类库相比,性能相当或有提升,内存占用少。
后续补充请持续关注。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1706103021a1440712.html
评论列表(0条)