2015-10-05 25 views
1

是否可以設置一個編譯選項直接編譯如下:用javac和double轉換成浮動

float f = 1.0; 

我不喜歡「1.0」之後加上「F」或「F」 。那麼,我可以告訴編譯器直接將double轉換爲float嗎?

謝謝你的每一個答案。

+0

不,沒有編譯器選項可以實現您想要的功能。與C/C++不同,Java是一種相當嚴格的語言,不允許任何變化。 – Nayuki

+2

這是JLS所要求的,所以......你最好開始喜歡它。或者停止使用浮動:) – Tunaki

+0

在'1.0'之後添加一個'F'(或'f'),(或者添加一個類似'(float)1.0;'的類型)。 –

回答

2

不,在Java編譯器中沒有這樣的選項。它會創建一種稍微不同的,不兼容的Java編程語言 - 到目前爲止已經被避免。

一般來說,Java編譯器和JVM在處理語言方面非常嚴格。只有很少的選項會影響源代碼在編譯時的行爲或運行時的邏輯。

例如,這些是不存在於Java中(但在其他語言中可能存在的)選項:

  • 製作編譯不區分大小寫。
  • 在Java源代碼上運行C預處理器(對於宏,包含等)。
  • 在運行時跳過所有數組索引檢查。
  • int溢出時拋出異常。

確實存在的選項是相當平凡:

  • Java編譯器:爲源代碼語言版本。
  • Java編譯器:源文件的字符集。
  • JVM內存限制。
  • JVM垃圾收集算法調優。

作爲一個方面說明,一些編譯時的行爲甚至被Java語言規範中規定的。例如,某些類型的unreachable code是編譯時錯誤,和一個標準的Java編譯器必須將其標記爲錯誤(不是警告或忽略):

while (true) { ... } 
foo(); // Compile-time error 

第二個例子:

return; 
bar(); // Compile-time error 

(這與C/C++形成鮮明對比,其中不可檢測的代碼檢測是由編譯器提供的可選診斷程序,以幫助編程人員;這不是必需的行爲。)

+0

jvm tuning並不是編譯器tuning.Its運行時虛擬機的調優 –

+0

我很清楚,謝謝。 – Nayuki

+0

編譯器爲什麼要防止編譯不可達代碼。我認爲程序員應該知道他寫的是什麼? – Kanteran

1

可以自定義編譯器選項嗎?是的,只是爲了向後兼容。

你的情況是向後兼容的例子嗎?

示例:直到Java 1.4,assert不是關鍵字並且可以用作變量。編譯assert關鍵字時,可以將其用作較低的編譯類。