Java 13个语法糖梳理总结

0. 前言

  • 为什么需要语法糖?语法糖可以让程序更加简洁,有更高的可读性。举个不太恰当但是可以说明问题的例子,很多饭店每天需要买菜,一般的买菜单都是由厨师手写的,而有些蔬菜的名字比较难写,所以他们在写的时候跟采购的人达成一致,例如:厨师写的是“九菜”,采购员采购的时候会自动购买“韭菜”,这没有改变和影响采购过程,但是厨师在写菜单的时候方便了不少。
  • 什么是语法糖?语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。这些语法在编译器编译的过程中会被替换,不影响最终生成的字节码。
  • 语法糖是如何工作的?Java虚拟机并不支持这些语法糖,这些语法糖在编译阶段就会被还原成简单的基础语法结构,这个过程称为解语法糖。如果你去看com.sun.tools.javac.main.JavaCompiler的源码,你会发现在compile()中有一个步骤就是调用desugar(),这个方法就是负责解语法糖的实现的。

下面的语法糖都可以通过一些简单的程序经过反编译之后看到细节,感兴趣的可以自己在IDE中尝试,反编译的工具有JD-GUI,javap,jad,CRF等。

1. String中的“+”背后采用StringBuild实现

在Java7之前我们在使用String进行字符串拼接操作的时候是这样的:

// 例如我们想拼接“hello” 和 “world”
//我们需要下面这样,这个时候相当于创建了一个新的String对象
// 频繁使用 + 操作会导致生成大量无用的中间对象
String a = "hello";
String b = "world";
String c = a + b;

但是有了语法糖之后,在对String类型的对象进行 + 操作的时候,其背后是通过StringBulid实现的,这就避免了大量不必要的中间对象生成。

2. switch 支持 String 与枚举

Java中的swith自身原本就支持基本类型。比如int、char等。对于int类型,直接进行数值的比较。对于char类型则是比较其ascii码。所以

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值