您好,歡迎來(lái)到賦能網(wǎng)!

java語(yǔ)法糖是什么意思?有哪些語(yǔ)法糖?

賦能網(wǎng) 2023-05-09 74

java開發(fā)中,有很多概念需要大家去理清,這樣可以幫助大家更好的開發(fā),比如java語(yǔ)法糖,這對(duì)一些新手來(lái)說(shuō)肯定是比較陌生的,那么下面我們就給大家分享一下java語(yǔ)法糖是什么意思?

語(yǔ)法糖(Syntactic sugar),也叫做糖衣語(yǔ)法,是英國(guó)科學(xué)家發(fā)明的一個(gè)術(shù)語(yǔ),通常來(lái)說(shuō)使用語(yǔ)法糖能夠增加程序的可讀性,從而減少程序代碼出錯(cuò)的機(jī)會(huì)。

有哪些語(yǔ)法糖?

常見(jiàn)的語(yǔ)法糖有泛型、變長(zhǎng)參數(shù)、條件編譯、自動(dòng)拆裝箱、內(nèi)部類等。

具體實(shí)現(xiàn):

1)switch從1.7支持String和enum類型。

首先對(duì)編譯器,switch關(guān)鍵字只能使用整型,如byte、char、short、int等。

字符串的switch是通過(guò)equals()和hashCode()方法來(lái)實(shí)現(xiàn)的。

2)泛型。

jvm中沒(méi)有泛型,只有普通類型和普通方法,泛型類的類型參數(shù),在編譯時(shí)都會(huì)被擦除。泛型并沒(méi)有自己獨(dú)特的Class類型。

類型擦除:如果泛型參數(shù)指定了上限,如,移除所有類型參數(shù),替換為頂級(jí)的父類型,如果沒(méi)指定則使用Object。

3)自動(dòng)裝箱、拆箱

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

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

int i = 10;

Integer n = i;自動(dòng)裝箱,反編譯class后,Integer.valueof(i)

int j = n;自動(dòng)拆箱,反編譯class后,使用n.intValue()方法

Integer -128 ~127之間有緩存。

4)可變參數(shù)

String... strs,反編譯后String[] strs,調(diào)用時(shí)創(chuàng)建String[]數(shù)組,傳入方法。

5)枚舉類型

enum 創(chuàng)建具名值的有限集合。

創(chuàng)建一個(gè)enum類型,底層public class MyEnum extend Enum

6)內(nèi)部類

編譯時(shí)的概念,編譯后生成兩個(gè)不同的.class文件。Outer.class和Outer$Inner.class

7)數(shù)值字面量

整數(shù)、浮點(diǎn)數(shù),都允許在數(shù)字之間插入任意多個(gè)下劃線。編譯階段會(huì)去掉。

8)for-each

for-each底層使用普通的for循環(huán)和迭代器

9)lambda表達(dá)式

lambda的實(shí)現(xiàn),依賴了底層lambda的api。編譯階段糖解,將lambda表達(dá)式轉(zhuǎn)換為調(diào)用內(nèi)部api的方式。Lambdametafactory#metafactory。

Java語(yǔ)法糖方便程序員使用,能夠增加程序的可讀性,從而減少程序代碼出錯(cuò)的機(jī)會(huì)。所以作為java人員一定要弄清Java語(yǔ)法糖的使用方法!最后大家如果想要了解更多java初識(shí)知識(shí),敬請(qǐng)關(guān)注賦能網(wǎng)。


本文鏈接:

本文章“java語(yǔ)法糖是什么意思?有哪些語(yǔ)法糖?”已幫助 74 人

免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!

本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579

如果本頁(yè)不是您要找的課程,您也可以百度查找一下: