學習一種新的程式設計語言比學習新的口頭語言要容易得多。然而,在這兩種學 習過程中,都要付出額外的努力去學習不帶口音地說新語言。如果您熟悉 C 或 C++,那麼學習 Java 語言並不困難,這就像是會說瑞典語的人去學丹麥語一樣 。語言雖有不同,但又彼此互連。但若不夠謹慎,您的口音每次都會暴露出您並 非原生語言使用者這個秘密。
C++ 程式員往往會對 Java 代碼做出一些變形,而這樣的舉動將他們與原生 Java 語言使用者清晰地區分開來。他們的代碼可以無錯運行,但對於原生語言用 戶來說,就是有一些地方不對勁。因而原生語言使用者可能會輕視非原生使用者。從 C 或 C++(或者 Basic、Fortran、Scheme 等)轉到 Java 語言時,您需要根除 一些習慣用語,並糾正某些發音,以便流暢地使用新語言。
在本文中,我探討了一些往往被忽視的 Java 編程細節,因為從語義上來說 ,它們並不重要,甚至是無關緊要的。它們純粹是風格和慣例問題。其中有些細 節有著似是而非的理由,其他一些甚至連似是而非的理由也沒有。但所有這些細 節都是當今編寫的 Java 代碼中真實存在的現象。
這是什麼語言?
讓我們首先來看一段代碼,其作用是將華氏溫度轉換為攝氏度,如清單 1 所 示:
清單 1. 一段 C 代碼?
float F, C;
float min_tmp, max_tmp, x;
min_tmp = 0;
max_tmp = 300;
x = 20;
F = min_tmp;
while (F <= max_tmp) {
C = 5 * (F-32) / 9;
printf("%f\t%f\n", F, C);
F = F + x;
}
清單 1 中使用的是什麼語言?很顯然是 C 語言 —請等一下,讓我們來看看 完整的程式,如清單 2 所示:
清單 2. Java 程式
class Test {
public static void main(String argv[]) {
float F, C;
float min_tmp, max_tmp, x;
min_tmp = 0;
max_tmp = 300;
x = 20;
F = min_tmp;
while (F <= max_tmp) {
C = 5 * (F-32) / 9;
printf("%f\t%f\n", F, C);
F = F + x;
}
}
private static void printf(String format, Object... args) {
System.out.printf(format, args);
}
}
無論您是否相信,清單 1 和清單 2 都是使用 Java 語言編寫的。它們只是 以 C 語言方言(老實說,清單 1 也確實可以是 C 代碼)編寫的 Java 代碼。 這裡的幾個習語標誌著:編寫這段代碼的人是以 C 語言思考的,只是單純地將 其翻譯為 Java 語言: