2014-03-13 22 views
0

Java編譯器有一些特殊的行爲,人們往往會偶然發現它與處理原語有關 - 但這往往是一個偶然發現的未知事件。Java Primitive Gotchas

例如

long i = 10000000000000; 

生成編譯器錯誤,因爲它不檢查數被分配給長,具體地,並且以固化這樣的情況的唯一方式是寫

long i = 10000000000000l; 

有些類似

float f = 10.1; 

會生成一個編譯器錯誤,因爲編譯器期望雙重

float f = 10.1f; 

是什麼要求。

雖然加寬原則是顯而易見的,評估公式右邊的其他問題首先涉及到承擔

short a = 2; 
short b = 2; 
short c = a*b; 

也將產生一個編譯器錯誤如Java自動提升倍增短褲整數。

有沒有人有任何類似的增加到這些 - 或一些窮盡列表編譯其他地方,可能會阻止開發人員通過試驗和錯誤瞭解這些?

+0

對不起,但什麼是陷阱? :/ – Maroun

+0

你在問顯式演員嗎? – javawocky

+1

@MarounMaroun - gotchas(from「got you」 - > gotcha)可以採取意思是「驚喜」,但從來沒有在積極的情況下:-) – radai

回答

1

非常相似,你的例子,但字節簽字,所以你不得不說

byte a = (byte)0xFF; 
byte b = (byte)0xF0; 

但是,不快,是OK

byte c = 0x0F; 

而且也是byte & byte = int,這樣的:

byte d = (byte)(a & b); 

哪個可以讓bit-twidd凌動的操作比你期望的要尷尬。

相關問題