大家好,我是大洋。Java14于2020年3月17日发布。在本文中,我们将介绍一些添加到Java编程语言中的功能以及一些代码示例。Java14的主要更新如下:instanceof(预览版)文本块的模式匹配(第二次预览版)NullPointerExceptions:精确描述哪个变量是nullrecord记录类(预览版)switch表达式(标准)1.instanceof(预览版)的模式匹配在Java14中,instanceof运算符已被修改为采用带有类型的表达式。类型测试模式(在instanceof中使用)由指定类型的描述和单个变量组成。在下面的代码中,短语Strings是一个类型测试模式:if(objinstanceofStrings){//scanbeusedhere}else{//variablescannotbeusedhere}2.TextBlocks(SecondPreview)Java在处理json或xml文本时,需要进行多次繁琐的嵌套转义,代码写起来费劲,维护起来更费力。Java13开始引入文本块(Textblocks),上面代码:packagecn.dayangshuo;/***@authorDAYANG*/publicclassTextBlocks{publicstaticvoidmain(String[]args){//需要转义StringjsonStr="{\"name\":\"大洋\"}";//文本块,不需要转义字符StringtextBlocks="""{"name":"Dayang"}""";系统.out.println(jsonStr);System.out.println(textBlocks);}}3。NullPointerExceptions:精确描述哪个变量是nullpackagecn.dayangshuo.collectors;/***@authorDAYANG*/publicclassNullPointerExceprionsTest{//空指针错误publicstaticvoidmain(String[]args){Useruser=null;System.out.println(user.getName());}staticclassUser{私有字符串名称;publicStringgetName(){返回名称;}publicvoidsetName(Stringname){this.name=name;}}}//jdk8错误信息:Exceptioninthread"main"java.lang.NullPointerExceptionatcn.dayangshuo.collectors.NullPointerExceprionTest.main(NullPointerExceprionTest.java:9)//jdk14错误信息:Exceptioninthread"main"java.lang.NullPointerException:Cannotinvoke"cn.dayangshuo.collectors.NullPointerExceprionsTest$User.getName()”因为cn.dayangshuo.collectors.NullPointerExceprionTest.main(NullPointerExceprionsTest.java:9)处的“user”为null4.record记录类(预览)传统Java应用都是通过A类创建的,通过类的构造函数实例化类,并通过getter和setter方法访问成员变量或设置成员变量的值,加上record关键字,你的代码会变得更加简洁。packagecn.dayangshuo;/***普通dto*@authorDAYANG*/publicclassNormalEntity{publicstaticvoidmain(String[]args){//传统方式User1user1=newUser1("Dayang",1990);System.out.println(user1);//reocrdrecordclassUser2user2=newUser2("大洋",1990);System.out.println(user2);}}/***成员变量是固定的*/classUser1{Stringname;整数年龄;publicUser1(Stringname,Integerage){this.name=name;这个。年龄=年龄;}publicStringgetName(){返回名称;}publicvoidsetName(Stringname){this.name=name;}publicIntegergetAge(){返回年龄;}publicvoidsetAge(Integerage){this.age=age;}@OverridepublicStringtoString(){return"User1["+"name='"+name+'\''+",age="+age+']';}}packagecn.大阳朔;/***record记录类*也可以覆盖equals()hashCode()toString()方法*@authorDAYANG*/recordUser2(Stringname,Integerage){@OverridepublicStringtoString(){return"User2["+"name='"+name+'\''+",age="+age+']';}@Overridepublicbooleanequals(Objectobj){returnfalse;}@OverridepublicinthashCode(){返回0;}}5。开关表达式代码(标准):packagecn.dayangshuo;/***@authorDAYANG*/publicclassOldSwitch{publicstaticvoidmain(String[]args){oldSwitch();新开关();}privatestaticvoidoldSwitch(){intsize=3;字符串cn="";switch(size){case1:cn="one";休息;case2:cn="二";休息;case3:cn="三";休息;默认值:cn="未知";}System.out.println(cn);}//更清爽privatestaticvoidnewSwitch(){intsize=3;Stringcn=switch(size){case1->"一";case2->"二";case3,4->"三";默认->“未知”;};System.out.println(cn);}}
