作者:MagicGood来源:恒生LIGHT云社区句法糖(SyntacticSugar),又称糖衣语法,来自英国计算机科学家Peter.J.Landin发明的一个术语,指的是某个A对语言的功能没有影响,但更便于程序员使用的语法。本文通过示例代码来学习和理解Java中语法糖的原理和用法,帮助您在学习如何使用Java语法糖的同时理解这些语法糖背后的原理。自动装箱和拆箱自动装箱就是Java自动将原始类型的值转换为对应的对象,比如将int变量转换为Integer对象。这个过程称为装箱。反之,将Integer对象转换成int类型的值是一个过程。这叫做拆箱。如果装箱和拆箱是自动的非人工转换,就叫自动装箱和拆箱。byte、short、char、int、long、float、double、boolean基本类型对应的封装类有Byte、Short、Character、Integer、Long、Float、Double、Boolean。代码示例:自动装箱//编译前inta=8;整数b=a;//编译后inta=8;自动拆箱//编译前Integera=8;整数b=a;//编译后Integera=Integer.valueOf(8);从反编译的内容可以看出,装箱时会自动调用Integer的valueOf(int)方法。拆箱时会自动调用Integer的intValue方法。装箱过程通过调用wrapper的valueOf方法实现,拆箱过程通过调用wrapper的intValue方法实现。数字字面量从Java7开始,数字字面量,无论是整数还是浮点数,都允许在数字之间插入任意数量的下划线。这些下划线不会影响字面值,目的是方便阅读。代码示例://编译前inta=520_1314;System.out.println(a);//编译后inta=5201314;从示例代码中可以发现反编译后删除了_。这意味着编译器无法识别数字文字中的_,并在编译阶段将其删除。开发中,如果输入的数值过长,可以拆分,提高可读性。字符串拼接字符串+数字拼接的原理是,两个字符串的拼接会先新建一个StringBuilder对象,然后对字符串进行append操作,最后调用toString()方法。代码示例://编译前Stringa="hello";Stringb="world";Stringc=a+b;//编译后Stringa="hello";Stringb="world";在字符串拼接的场景下,推荐直接使用StringBuilder,效率更高。使用+会创建多个StringBuilder对象,导致效率降低。断言在Java中,assert关键字是从JAVASE1.4引入的。为了避免在旧版本的Java代码中使用assert关键字导致的错误,Java在执行过程中默认是不开启断言检查的(此时所有的断言语句都会被忽略!),如果你想开启断言检查,您需要使用开关-enableassertions或-ea来启用。代码示例://编译前,inta=5;intb=6;asserta==b;System.out.println("Theassertioniscorrect!");//编译后,inta=5;intb=6;if(!$assertionsDisabled&&a!=b)thrownewAssertionError();编译后的代码比我们写的代码复杂得多。因此,我们通过使用assert这个语法糖,节省了大量的代码。其实断言的底层实现是if语言。如果断言结果为真,什么都不做,程序继续执行。如果断言结果为假,程序将抛出AssertError中断程序的执行。断言在开发中一般用的比较少,但是我们要明白Java中是有这种机制的。方法参数Variable变量参数(variablearguments)是Java1.5引入的一个特性,它允许向一个方法中传入数量可变的相同类型的参数。代码示例publicvoidvarParam(String...ls){for(inti=0;i
