一篇文章带你理解JDK11的新特性@杨章隐

一篇文章带你理解JDK11的新特性@杨章隐


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 List elements) {

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 List copyOf(Collection coll) {

return py(coll);

}

static List listCopy(Collection coll) {

if (coll instanceof AbstractImmutableList &&

ss() != ) {

new 12<>(elements[0],

elements[1]);

return (List)coll;

} else {

return (List)(y());

}

}

通过源码我们可以看出,调用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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信