java培训
搜索分类

java语法糖是什么意思?有哪些语法糖?

赋能网 2023-05-09 74

java开发中,有很多概念需要大家去理清,这样可以帮助大家更好的开发,比如java语法糖,这对一些新手来说肯定是比较陌生的,那么下面我们就给大家分享一下java语法糖是什么意思?

语法糖(Syntactic sugar),也叫做糖衣语法,是英国科学家发明的一个术语,通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。

有哪些语法糖?

常见的语法糖有泛型、变长参数、条件编译、自动拆装箱、内部类等。

具体实现:

1)switch从1.7支持String和enum类型。

首先对编译器,switch关键字只能使用整型,如byte、char、short、int等。

字符串的switch是通过equals()和hashCode()方法来实现的。

2)泛型。

jvm中没有泛型,只有普通类型和普通方法,泛型类的类型参数,在编译时都会被擦除。泛型并没有自己独特的Class类型。

类型擦除:如果泛型参数指定了上限,如,移除所有类型参数,替换为顶级的父类型,如果没指定则使用Object。

3)自动装箱、拆箱

装箱使用包装器的valueOf方法,拆箱使用包装器的xxxValue方法。

byte、short、char、int、long、float、double、boolean => Byte、Short、Character、Integer、Long、Fload、Double、Boolean等。

int i = 10;

Integer n = i;自动装箱,反编译class后,Integer.valueof(i)

int j = n;自动拆箱,反编译class后,使用n.intValue()方法

Integer -128 ~127之间有缓存。

4)可变参数

String... strs,反编译后String[] strs,调用时创建String[]数组,传入方法。

5)枚举类型

enum 创建具名值的有限集合。

创建一个enum类型,底层public class MyEnum extend Enum

6)内部类

编译时的概念,编译后生成两个不同的.class文件。Outer.class和Outer$Inner.class

7)数值字面量

整数、浮点数,都允许在数字之间插入任意多个下划线。编译阶段会去掉。

8)for-each

for-each底层使用普通的for循环和迭代器

9)lambda表达式

lambda的实现,依赖了底层lambda的api。编译阶段糖解,将lambda表达式转换为调用内部api的方式。Lambdametafactory#metafactory。

Java语法糖方便程序员使用,能够增加程序的可读性,从而减少程序代码出错的机会。所以作为java人员一定要弄清Java语法糖的使用方法!最后大家如果想要了解更多java初识知识,敬请关注赋能网。


发表评论
0评