进击的 Java(五)
书接上回,上回聊到 Java10 和 11 的变化,除了 var 感觉真没什么变化,今天继续往后面的版本来看。看了后面的版本更新就会 faxing,10 和 11 其实内容还是挺丰富的。事实就是如此,12-15 都是一带而过的版本,几乎没什么摆的上台面的新功能,不知道是在划水还是在憋什么大招。
decimal 类似数据格式化
CompactNumberFormat
首先出现在 12 的版本中,作用就是在不同的语言环境中给 decimal 类型的数据做格式化,比如美国的 1000 会写成 1k,1000000 会写成 1M,在印度相应的就是1 हज़ार
和1 क.
。为了使这样的格式化更方便,就新增了这样的 formater。具体是这么用的:
复制代码
好像是个没什么用的更新。
String 新增方法
indent:给字符串做缩进,接受一个 int 型的输入
transform:接受一个转换函数,实现字符串的转换
更像一个函数式语言了,举个例子:
复制代码
全新的 switch
这个不是游戏机的 switch,是 switch 表达式。之前的 switch 的写法相对冗长,大多数时候也只是作为一个优化多个 if else 的存在,使用起来也并不灵活。
复制代码
还有就是,假如忘记在每个 case 中写 break,那就都会走到 default 中,反正我是经历过自己写了这么蠢的 bug。现在怎么写呢:
复制代码
引入了->
,这里不是 lambda,是会执行后面的语句的意思。可能是看了 kotlin 的设计,觉得不错就复制下来了。不过 kotlin 没有 case,取而代之的是 when,个人感觉更能表达分支的含义。新的写法的灵活之处在于:
复制代码
这本质上是一个求值语句,可以放在任何需要求值的地方。
Java12 的主要更新就是这些。
评论