Java8从14年发布以来已经经历了8年的厮杀,最终拼杀了Java50%的市场,可谓打遍天下无敌手。但是,随着JDK17的发布,Spring6的更新,Java8受到极大的挑战。这里我引用oracle官网的一张版本支持的线路图
创新互联公司主营鄠邑网站建设的网络公司,主营网站建设方案,app开发定制,鄠邑h5微信小程序搭建,鄠邑网站营销推广欢迎鄠邑等地区企业咨询Oracle Java SE支持路线图
我们可以看到,JDK17也是官方提供的LTS版本,支持到2026。并且随着Spring6、SpringBoot3的更新,JDK17在未来肯定会一点点侵蚀Java8到市场。现在就让我们一起来了解一下JDK17一些实用的新特性。
var是Java10新增的关键字,可以更简洁的方式声明局部变量,它可以自动推导变量类型
public class VarTest {
public static void main(String[] args) {
var str = "1";
System.out.println("var出来的string:"+ str); // var出来的string:1
var num = 1;
System.out.println("var出来的int:" + num); // var出来的int:1
var arr = new int[]{1, 2, 3};
System.out.println("var出来的array:"+ Arrays.toString(arr)); // var出来的array:[1, 2, 3]
var list = getList();
System.out.println("使用var接受方法返回值:" + list); // 使用var接受方法返回值:[1, 2, 3]
}
private static ListgetList() {
Listlist = new ArrayList<>();
for (int i = 1; i<= 3; i++) {
list.add(i);
}
return list;
}
}
switch表达式先后经过Java1.5、Java1.7两个版本的增强,到Java8的时候,支持byte、short、char、int、枚举类型、String类型,但是我们每一个case都要 break或者return,不然switch会依次执行每一个case。相信很多小伙伴在刚接触的时候心里都发慌。好在JDK14帮我们解决了这个问题,我们不用使用break或者return也可以了。
public class SwitchTest {
public static void main(String[] args) {
var type = 8;
switchTest(type);
}
private static void switchTest(int type) {
switch (type) {
case 1 ->System.out.println("星期1");
case 2 ->System.out.println("星期2");
case 3 ->System.out.println("星期3");
case 4 ->System.out.println("星期4");
case 5 ->System.out.println("星期5");
case 6, 7 ->System.out.println("周末");
default ->System.out.println("输入错误");
}
}
}
字符串加强是JDK15提供的功能,意在简化json、标签的书写成本
public class StringTest {
public static void main(String[] args) {
String str = "{\"id\":1,\"name\":\"泉泉\"}";
System.out.println("普通字符串:" + str);
String jdk15JsonStr = """
{
"id":1,
"name":"泉泉"
}
""";
System.out.println("jdk15字符串加强:" + jdk15JsonStr);
}
}
instanceof加强是JDK16提供的特性,可以省去类型的转化
public class InstanceofTest {
public static void main(String[] args) {
var data = getData();
Object key1 = data.get("key1");
Object key2 = data.get("key2");
// 传统写法
if (key1 instanceof String) {
String str = (String) key1;
System.out.println("key1是字符串:" + str);
}
if (key2 instanceof Integer) {
Integer num = (Integer) key2;
System.out.println("key2是Integer:" + num);
}
// jdk16简化写法
if (key1 instanceof String str) {
System.out.println("key1是字符串:" + str);
}
if (key2 instanceof Integer num) {
System.out.println("key2是Integer:" + num);
}
}
private static MapgetData() {
Mapdata = new HashMap<>();
data.put("key1", "aaa");
data.put("key2", 111);
return data;
}
}
JDK17带来的更新远不止这些,以上只是我们常用的一些特性,JDK17还有更多性能方面的提升,比如JVM和GC,当然还有强大的ZGC,随着JDK17的普及,后面我们一起深入探讨。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧