Java14不得不知的5个新功能

虽然我们现在还用的JDK8

文本块

以前在Java里写个长点的字符串是这个样子地:

String sql = "select * from t_tianlangstudio_student"

+ " where age > 23 and age < 30"

+ " and sex = 1";

如果字符串中再包含有双引号还需要转义,虽然有IDE帮忙,但还是时常羡慕Scala、Rust里的文本块(多行字符串)的写法,那个酸爽,Java14里终于也可以这样写了:

public static String index = """

tianlangstudio

一个不安分的程序员

""";

是不是清爽多了?

Switch表达式

以前使用switch大概是这个样子地 :

public static int codeDemo(int i) {

int result;

switch(i) {

case 1:

case 2:

result = 18;

break;

case 3:

result = 28;

break;

default:

result = 100;

break;

}

return result;

}

现在可以这样写了:

public static int code(String s) {

int result = switch(s) {

case "a" , "b" -> 1;

case "c" -> 2;

default -> 100;

}

return result;

}

是不是清爽了很多?Java也开始区分表达式和(声明)语句了?关于表达式和语句可以参考Rust .

不过Rust里更多使用Match,Java14也对模式匹配有了些许支持,主要体现在instanceOf的使用上。

instanceOf

使用instanceOf判断一个变量是否属于某个类型的实例的同时,还能声明一个变量作为当前类型的实例进行更多的判断.就像这个样子:

public static void demo(Object obj) {

if (obj instanceof String s && s.length() > 4) {

System.out.println("it is a String and length greater than 4");

}

}

没看出哪里不一样了?注意看String s 。可以自行脑补下要使用JDK8编写代码是什么样子的?

record

有没觉得每次定义个(Java类)POJO,需要写大量的get,set方法还得重写equals方法特别麻烦,是不是也想要Scala中的样例类、Rust中的类元组struct那样简洁的类型定义方式?

Java14提供了record,可以这样定义类型了:

public static void main(String[] args) {

Person person1 = new Person("Tianlang", 23);

Person person2 = new Person("Tianlang", 23);

System.out.println(person1.equals(person2)); // true

}

public static record Person(String name, int age){}

就问你清爽不清爽 ?

更有用的空指针异常提示信息

你是否也像我一样经常写链式调用的代码,就像这样:

String str = obj.fieldA.fieldAA.fieldAAA;

这样写起来可以少费几根头发起变量名称,直到出现了空指针异常,异常信息只告诉你那一行出现了空指针,为了调试代码只好类似这样:

System.out.println(obj);

System.out.println(obj.fieldA);

System.out.println(obj.fieldA.fieldAA);

String str = obj.fieldA.fieldAA.fieldAAA;

是否也曾像我一样从心底升起无数个草泥马. 可能是我们的呼唤起了作用,终于在Java14中会告诉你具体那个代码调用出了空指针。记得要在代码执行时设置:

-XX:+ShowCodeDetailsInExceptionMessages

如果你像我一样不想升级JDK又想尝试新的写法也可以考虑新语言如:Scala 或Rust语言.

java明星游戏_#IT明星不是梦#Java14不得不知的5个新功能相关推荐

  1. java明星养成游戏_#IT明星不是梦#Java14不得不知的5个新功能

    Java14不得不知的5个新功能 虽然我们现在还用的JDK8 文本块 以前在Java里写个长点的字符串是这个样子地: String sql = "select * from t_tianla ...

  2. java record用法_Java14不得不知的5个新功能

    Java14不得不知的5个新功能虽然我们现在还用的JDK8 文本块 以前在Java里写个长点的字符串是这个样子地:String sql = "select * from t_tianlang ...

  3. linux小型游戏系统设计,Linux平台下基于JAVA小游戏_设计文档.doc

    Linux课程设计报告 课题名称:<Linux平台下基于java小游戏设计> 专 业:2011级计算机科学与技术 组 长:043佘清泉 组 员:007陈威达 008陈学仁 026赖华标 0 ...

  4. 经典按键java手机游戏_用诺基亚N95体验2G时代的JAVA手游,能正常运行吗?

    5G时代的来临似乎有点快,尽管5G在有些地区还没有完全普及开来,不少人还在用只支持4G.3G的手机,甚至还有在用2G手机.但不可否认的是,手机是否支持5G俨然成为当下消费者买手机的第一关注点. 而这篇 ...

  5. 经典按键java手机游戏_用诺基亚N95体验2G时代的JAVA网游,能正常运行么

    5G时代的来临似乎有点快,尽管5G在有些地区还没有完全普及开来,不少人还在用只支持4G.3G的手机,甚至还有在用2G手机.但不可否认的是,手机是否支持5G俨然成为当下消费者买手机的第一关注点. 而这篇 ...

  6. java福利游戏_《我的世界中国版》PC Java版开测 家族盛典福利不断

    导 读 8月8日14点,<我的世界>中国版正式开启PC Java版不限号测试.从今日起,对于这款风靡全球的沙盒游戏,国内玩家不必付费购买游戏,也无需邀请码,便可以直接下载游戏,开启新的旅程 ...

  7. 用java写游戏_用java写的扫雷游戏

    扫雷不能不说一款非常经典的游戏,无聊时候可以打发时间,虽然玩了很久,但还不知道它是怎么写的,所以自己就尝试动手做了个. 众所周知,java的swing采用mvc模式,即模型-视图-控制器,所以如果真的 ...

  8. java 3d游戏_不放一行代码分享一下java实现3D游戏逻辑

    这篇日记是对最近几周Java大作业写的一个3D打怪挖矿游戏进行记录和总结.另一个目的也是因为我发现身边很多朋友对3D游戏逻辑很有兴趣.所以写这篇日记可以介绍一下一个3D游戏是如何实现基础功能的.即使没 ...

  9. java黄金分割点游戏_结对编程1——黄金点小游戏项目简介及需求分析

    一.项目成员 2018141461085 龚泽楠 2018141461012 蔡铧荣 二.项目名称 黄金点小游戏 三.项目简介 游戏规则: N个同学( N通常大于 10 ),每人写一个 0~100 之 ...

最新文章

  1. IT 学习资料 大全
  2. 限时分享:产品经理面试高频考题及答案
  3. [react] 使用React的memo和forwardRef包装的组件为什么提示children类型不对?
  4. c语言程序设计万年历的显示,C语言程序设计万年历
  5. 当科学家遇上流氓,被喧哗炒作的量子通信技术又将何时落地?
  6. Java的继承和python的继承_Java ,python面向对象的继承及其区别
  7. 洛谷 P1896 状压DP
  8. 【Gym-101775 J】Straight Master【差分、贪心】
  9. linux终端命令大全(完善中)
  10. 电路中负电源的注意事项
  11. 利用VMWare和软路由多播实现校园网带宽叠加
  12. 至强CPU型号系列的变化
  13. 微信上传图片没反应_365微信编辑器图片上传不了怎么办?
  14. 28岁华为员工工资表曝光,牛逼的人注定会牛逼
  15. 如何实现系统的单点登录?
  16. 前端代码规范之代码格式化配置
  17. Python猫眼电影最近上映的电影票房信息
  18. 程序员上班第一天必用工具,git速查表
  19. 视频硬字幕提取方法(可完全离线),开发个小工具辅助一下
  20. 签约喜讯|国盛智科携手瑞云服务云,推动数字化营销服务管理战略升级

热门文章

  1. Centos6.5不支持ip nets命令
  2. android自定义view背景透明度,Android 背景透明度设置总结
  3. ubuntu服务器修改保存文件,Ubuntu Server 如何永久保存iptables的设置?
  4. 计算机辅助设计工业产品cad竞赛试题,2017工业产品设计CAD比赛试题
  5. java json传值到前台_json前后台传值
  6. java 图片操作_Java对图片的操作
  7. VS2008+CUDA6.0 出现LINK:fatal error LINK1146:没用选项/LIBPATH指定的参数
  8. 计算机云文档,计算机的云计算论文.doc
  9. 数据库设置为php5.3,php5.3不能连接mssql数据库的解决方法,php5.3mssql_PHP教程
  10. webdriver原理_(最新版)如何正确移除 Pyppeteer 中的window.navigator.webdriver