簡體   English   中英

為什么不為短類型添加“ s”后綴?

[英]Why don't we add an “s” suffix to short types?

我們為什么不寫s與像短數據類型short s = 2s; 當我們用float編寫時,例如float f = 1.23f

我知道默認情況下,當我們編寫float ,編譯器會將其視為double並為其分配8個臨時字節,並且當它嘗試將8個字節復制到float的4中導致類型錯誤時,這就是為什么我們編寫f在初始化float ,但是為什么我們不對short做類似的事情,因為int默認是文字類型?

Java語言規范允許長字面量的類型后綴為Ll 但是,它沒有為短值提供類型后綴。 沒必要,因為:

如果變量的類型為byte,short或char,並且常量表達式的值可表示為變量的類型,則可以使用縮窄的原始轉換。

那是因為從double到float會截斷值並丟失數據,因此編譯器不會自動執行此操作,因此必須明確地告訴它。 但是,當從較小的大小(短)轉換為較大的大小(整數)時,它是自動完成的,因為編譯器只需要填充數據,並且與前一種情況相反,沒有潛在的數據丟失。

為什么不為短類型添加“ s”后綴?

因為Java語言在這一點上是不一致的。

對於沒有浮點數字圖元類型的JLS,它比浮點數字圖元類型更靈活:

另外 ,如果表達式是類型為byte,short,char或int的常量表達式(第15.28節):

如果變量的類型為byte,short或char,並且常量表達式的值可表示為變量的類型,則可以使用縮窄的原始轉換。

我認為,實際上並不需要以聲明和操作它們的方式來區分byte, short, char, or intfloat and double 它會造成不一致,因此在使用它們時可能會導致錯誤。

如果short s = 10; 之所以有效,是因為縮小的原始轉換已由編譯器驗證為沒有丟失信息,因此float f = 10.0; 出於完全相同的原因也將是有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM