java11- 新特性

java11-官方更新列表


181 基于嵌套的访问控制
309 新增了常量池中类文件一个描述符
315 改进Aarch64架构执行效率
318 Epsilon:垃圾收集器没有生产意义,用于实验或者测试--真正没有收集垃圾的GC
    之前的gc可以通过一个属性禁止掉,这个生产环境不可能用它
320  移除两个模块Java
321 HTTP Client  不需要依赖第三方api了,集成度、效率提高了
323 为了lambla增加了局部变量语法 var作为关键字声明为变量
324 两个加密算法
327 支持Unicode10
328 飞行记录仪  记录虚拟机的内部运行细节
320 两个加密算法
330 单文件源程序可以直接执行
331 低成本的堆分析
332 安全方面的更新
333 ZGC
335+336 废弃 Nashorn JavaScript引擎,建议迁移到另外一个平台 ,废弃 Pack200 

01 Jshell 就像一个客户端一样,方便快速的执行语句。不需要写类,在cmd里输入jshell。
    就可以快速调试代码,也不用启动eclipse
03 局部变量类型推断(var关键词),通过右边推断左边
     var b = new StringBuffer();
注意点:1)var a; 这样不可以,因为无法推断
             2)类的属性的数据类型不可以使用var
最主要的用途用在lamada表达式中 Consumer<T>消费型函数式接口
错误的:必须要有类型,可以加上var
Consumer<String> consumer  =(@Deprecated t)->System.out.println(t.toUpperCase());
正确的
Consumer<String> consumer  =(@Deprecated var t)->System.out.println(t.toUpperCase());
04. 集合中的新API
List<String> list1=Arrays.AsList("aa","bb","cc","DD");  //不可以添加元素
List<String> list2= List.of("aa","bb","cc","DD"); //不可以添加元素
后续如果add.都会报错
以下也是和of有关的,一般都是用于创建对象的
LocalDate localDate = LocalDate.of(2019,1,21);
Set<Integer> set = Set.of(100,50,20,30,10,8); //不可以添加元素
Steam<Integer> stream = Stream.of(50,20,30,70);
在添加重复元素时,不是无法添加,而是抛出异常
05.Stream加强
流的处理 1)创建流 2)中间操作 3)终止操作
strem.forEach(System.out::printIn);
a)
b)添加了takWhile 和dropWhile方法
Steam<Integer> stream1 = Stream.of(3,9,20,22,40,7);
Steam<Integer> stream2 = stream1.takeWhile(t -> t%2!=0);
//从流中一直获取判定器为真的元素,一旦遇到元素为假,就终止处理。
stream2.forEach(System.out::printIn); //取到了3,9.后面条件变为假,就终止了,流是一次性的
Steam<Integer> stream3 = stream1.takeWhile(t -> t%2!=0);
stream2.forEach(System.out::printIn); //取到了20,22,40,7
c)流的迭代 单目运算  无限流
Steam<Integer> stream1 =  Stream.iterate(1,t->2*t+1);
如果直接对其进行迭代,没完没了的,最后会一直出现-1
Steam<Integer> stream1 =  iterate(1,t->2*t+1);
Stream1.limit(10).forEach(System.out::printIn);//限制10个
//有限的迭代
Steam<Integer> stream2=Stream.iterate(1,t->t<1000,t->2*t+1);
06.增加了一系列的字符串处理方法
a)判断字符串是否都是空白
string.isBlank();
b) 去除首尾空白,包括英文和其他所有语言中的空白。
string.strip();
和trim()区别: trim不能去除非英文字母的空白。只能去除码值小于等于32的空白字符 
c)去除尾部空白 string.stripTraling();
d)去除首部空白 string.stripLeading();
e)复制字符串
String string =“java”;
String string2 = string.repeat(5); //javajavajavajavajava
f)行数统计  "A\nB\nC".lines().count();
和split比较:字符串数组的处理没有流方便。
可以把文件当成大字符串,然后用这个来处理
FileInputStream fis = new FileInputStream("src/com/lxl/java11/StringTest.java");
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
String string = new String(buffer);
string.lines.forEach(System.out::println);
07.Optional加强
//of方法如果传入的参数是null,会抛出空指针异常 
Optional<String> optional = Optional.ofNullable(null);
Object object = optional.orElse("abc"); sout(object);
//如果内部引用为空,则返回参数中的引用,否则返回内部引用
optional.OrElseThrow(); //如果内部引用为空,会抛异常
optional.OrElseGet(); //和orElse差不多
08.改进的文件API
var c1 = this.getClass().getClassLoader();
var ins = c1.getResourceAsStream("file");
try(var os = new FileOutPutStream("file2")){
     is.transferTo(os); //把输入流中的所有数据直接自动的复制到输出流中
//可以快速的复制,不需要缓冲区
}
is.close();
09.httpClient
10.废弃的内容
11.更简化的编译运行程序
java Hellojava.java
注意点:a 执行源文件中的第一个类,第一个类必须包含主方法
             b并且不可以使用别源文件中的自定义类,本文件中的自定义类是可以使用的
12.Unicode10
13.删除corba和javaee模块
14.删除Pack200.
是一个压缩工具,对普通的jar文件进行高效压缩,在java应用部署中引用
因为网络下载速度的提升以及java引入模块化系统之后不再依赖200.所以这个版本中移除这个
15Epsilion
主要用途:性能测试(可以帮助过滤掉gc引起的性能假象)
内存压力测试
16.ZGC JAVA11最为瞩目的特性,没有之一,实验性质
GC暂停时间不会超过10ms。既能处理几百兆的小堆,也能处理几个T的大堆。
STW --stop the world 所有的线程都停下来
用法:-XX:+UnlockExperimentalVMOptions
       -XX:+UseZGC 
ZGC是一个并发,基于region,压缩型的垃圾收集器。只有root扫描阶段会STW,
因此GC停顿时间不会随着
17.完全支持Linux容器(包括Docker)
在容器中运行jvm程序在设置内存大小和CPU使用率后,会导致应用程序的性能下降。这是因为它。
18.支持G1上的并行完全垃圾收集。
19.免费的低耗能飞行记录仪和堆分析仪
20.JFR


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值