Java8 vs Java11
目前市场上主流的稳定版当然还得属Java 8和Java 11,而目前大部分公司的生产环境还是Java 8居多。
所以如果从自学角度出发,我觉得这两个版本都OK,其他中间的一些比如Java 9、Java 10这些非稳定版就不用考虑了。
Java11 vs Java8
Java 11相对于Java 8确实有一部分进化,除了有很多内部的升级(比如开销和时延更低的GC、TLS1.3加持等等)之外,对于初学使用者来说也有一些语言使用层面的进化。
变量类型
新版Java引入了一个全新的动态类型关键字var,用var来定义的局部变量不用写具体类型,编译器能根据=右边的实际赋值来自动推断出变量的类型:
var name = "lukis-tsai";
var list = List.of("lukis", "tsai", "handsome");
// var 在for循环更加简单,在处理一些复杂的结构时也更简洁,如: List<List<String>>
for(var item : list) {System.out.println(item);
}
1 var只能在方法里定义,不允许定义类的成员变量
2 var定义的变量需要初始化,一旦赋值后,重新赋不同类型的值是不行的
3 var每次只能定义一个变量,不能复合声明变量
官方HTTP Client加持
现在java11自带HTTP Client了,位于java.net.http包下,支持发送同步、异步的HTTP请求
同步请求:
var request = HttpRequest.newBuilder().uri( URI.create("https://blog.csdn.net") ).GET().build();
// 同步请求方式,拿到结果前会阻塞当前线程
var httpResponse = HttpClient.newHttpClient().send( request, HttpResponse.BodyHandlers.ofString());
异步请求
CompletableFuture<String> future = HttpClient.newHttpClient().sendAsync( request, HttpResponse.BodyHandlers.ofString() ).thenApply( HttpResponse::body );
System.out.println("摸鱼划水喝茶....");
future.get();
String处理增强
新版字符串String类型增加了诸如:isBlank()、strip()、repeat()等方便的字符串处理方法
String myName = " lukis-tsai ";System.out.println( " ".isBlank()); // true
System.out.println( " ".isEmpty()); // falseSystem.out.println( myName.strip()); // 去除空格
System.out.println( myName.stripLeading()); // 去除左空格
System.out.println( myName.stripTrailing() ); // 去除右空格
System.out.println( myName.repeat(2)); // lukis-tsai lukis-tsai
集合增强
主要是增加了诸如of()和copyOf()等方法用于更加方便的创建和复制集合类型
var list = List.of( "lukis", "tsai", "handsome" );
var conpyList = List.copyOf(list);
System.out.println(list); // 打印 [lukis, tsai, handsome]
System.out.println(conpyList); // 打印 [lukis, tsai, handsome]var set = Set.of("lukis","tsai");
var copySet = Set.copyOf(set);
System.out.println(set); // 打印 [lukis, tsai]
System.out.println(conpySet); // 打印 [lukis, tsai]var map = Map.of("lukis","handsome","huahua","pretty");
var conpyMap = Map.copyOf(map);
System.out.println(map); // 打印 {lukis=handsome, huahua=pretty}
System.out.println(copyMap); // 打印 {lukis=handsome, huahua=pretty}
函数式编程增强
例如Stream 流增加了诸如takeWhile()和dropWhile()的截止结算方法
var list = List.of( "lukis", "huahua", "kimi" );// 从集合中依次删除满足条件的元素,直到不满足条件为止
var subList = list.stream().dropWhile( item -> item.equals("kimi") ).collect(Collectors.toList());
System.out.println(subList); // 打印 ["lukis", "kimi"]// 从集合中依次获取满足条件的元素,知道不满足条件为止
var subList1 = list.stream().takeWhile( item -> item.equals("huahua") ).collect(Collectors.toList());
System.out.println( upListSub2 ); // 打印 ["huahua"]
文件读写增强
1、Files类增强
心心念的直接能把文件内容读取到String以及String回写到文件的功能终于支持了,可以通过Files类的静态方法writeString()和readString()完成
Path path = Paths.get("/Users/lukis/test.txt");
String content = Files.readString(path, StandardCharsets.UTF_8);
System.out.println(content);
Files.writeString( path, "王老七", StandardCharsets.UTF_8 );
2、InputStream增强
InputStream则增加了一个transferTo()方法,直接将数据丢到OutputStream去:
InputStream inputStream = new FileInputStream( "/Users/lukis/test.txt" );
OutputStream outputStream = new FileOutputStream( "/Users/lukis/test2.txt" );
inputStream.transferTo( outputStream );
支持源文件直接运行
这时候可以直接用java指令去运行Java源文件,直接省去以前javac编译源文件的过程
java HelloWorld.java
Java8 vs Java11相关推荐
- 1. Java8 vs Java11
目前市场上主流的稳定版当然还得属Java 8和Java 11,而目前大部分公司的生产环境还是Java 8居多. 所以如果从自学角度出发,我觉得这两个版本都OK,其他中间的一些比如Java 9.Java ...
- 听说Java8和java11要收费了?程序员还有没有活路了
9月20多号Oracle发布了java 11,同时也发布后续更新策略 突然发现,诶,java 11是收费的,诶,java 8好像也要收费了呢 那这是怎么收费的呢? 我查了一些资料,和一些别人整理的解读 ...
- java8升级java11到底敢不敢?
2019独角兽企业重金招聘Python工程师标准>>> JDK 11 reached General Availability on 25 September 2018. JAVA_ ...
- jaxb java_jaxbapi的java8到java11迁移问题
jakarta.xml.bind jakarta.xml.bind-api 2.3.3 org.glassfish.jaxb jaxb-runtime 2.3.2 当我们使用运行API项目时,一切都正 ...
- 再见了Java8,Java17:我要取代你
此前,Java 之父高斯林曾经发文表示可以尝试升级到 JDK17,因为JDK17是一个比 Java8 更好的版本,发文如下: 简单翻译下就是: "对于那些仍然坚持使用 JDK8 的人,有一个 ...
- Spring Boot Serverless 实战系列“部署篇” | Mall 应用
作者:西流 关注[Serverless]公众号,后台回复 "学习" 即可获得 Serverless 技术资源包! 导读: Spring Boot 是基于 Java Spring 框 ...
- 通过google app engine 在google cloud 部署支持quic的Java web 应用(多种方式)
quic最先是由google提出并完善的,18年google cloud支持了quic协议,我尝试在google上部署一套自己的应用,并使其支持quic协议 google的文档还是非常完善的,只是类似 ...
- maven 项目管理和构建工具
mvn 1. maven 是什么 2. maven能解决什么问题 3. maven 需要配置和下载 4. 使用eclipse创建maven项目 5. xml依赖配置 作用范围 6. maven的常用命 ...
- Java基础-Java概述(第一、二章)
Java基础 文章目录 Java基础 1. Java概述(第一.二章) 1.1 Java基本介绍 1.2 Java的运行机制及运行过程 1.3 Java环境配置 1.4 Java快速入门 1.5 Ja ...
最新文章
- PostgreSql与sqlserver对比杂记
- Linux的经常使用命令(1) - 指定执行级别
- openMP 并行编程 基础
- 第七周实践项目3 负数把正数赶出队列
- java 定义一组常量用什么最好_Java语言中定义常量注意事项解析
- Airflow 中文文档翻译和改进活动 | ApacheCN
- JavaScript之BOM对象(JS函数作用域、window、history、location对象)
- 内核如何为系统调用的参数传递参数
- 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)签到题F Fireworks
- matlab简单分析模拟滤波器 IIR
- centos 虚拟机 使用串口_vmware中的centos怎样扩充空间
- Pyhon3 批量合并哔哩哔哩缓存的m4s视频文件
- 内存Available 是怎么计算的
- R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、conf.int参数为曲线添加置信区间、pval参数添加分组生存曲线p值
- DevExpress 报表 格式化
- Starbound正式版的Mod制作(二)nbsp;…
- 切换无线网卡失败服务器提示,电脑无线网卡切换为AP模式时提示ICS启动失败的解决方法...
- 发现一个美女,在黑夜中独自YY.
- Ubuntu20.02安装TPLink WDN7200H无线网卡
- android+高德地图教程,Android高德地图开发(三)地图简单操作
热门文章
- Android SearchView
- 【麦肯锡系列阅读笔记】学会提问
- 万字长文--详解AJAX(快速入门)
- 促双碳|智慧能源管理解决方案
- 为什么要在油气行业中应用 IoT?这 8 个应用场景告诉你 IoT 在油气行业中可以做什么...
- mysql replication slave_MySQL Replication,主从同步( Master-Slave)
- pytorch怎么下载?pytorch在哪里下载?
- vue 中 mixins 的使用
- 电脑c盘变红满了的清理方法
- 使用puppeteer 提示Error: Failed to launch the browser process解决办法