image-ru-01-05

「嗨!我叫拉嘎·畢拉阿伯。我是個外星人,也是這艘船上的醫生。希望我們可以變成好朋友。」

「我也希望。」

「在我的母星,我們使用先進的 Pascal 程式語言,而不是這個落後的 Java 語言。讓我們看看下面這個 Java 和 Pascal 代碼擺在一起的對照:」

Java Pascal
public class MyFirstClass
{
   public static void main(String[] args)
   {
      int a, b, c;
      String s1, s2;
      System.out.println("Enter two numbers");
      a = new Scanner(System.in).nextInt();
      b = new Scanner(System.in).nextInt();
      c = a + b;
      System.out.println("The sum is " + c);
   }
}
Program MyFirstProgram;
Var
   a, b, c: Integer;
   s1, s2: String;
Begin
   WriteLn("Enter two numbers");
   ReadLn(a);
   ReadLn(b);
   c := a + b;
   WriteLn("The sum is ", c);
End.

「這是用兩個不同的語言寫的同一個程式。你應該看得出來,Pascal 的行數比較少,這就是 Pascal 比 Java 厲害的證據。」

「如果你有看過 Pascal,我覺得這個例子應該可以讓你更容易了解 Java。」

「我沒看過 Pascal。不過比較兩種程式語言還是很有趣。」

「好吧。那我就繼續了。」

「在 Pascal 裡,我們會把代碼放在程式主體、程序 (procedure) 或函式中。在 Java,這個過程比較簡單:程式主體、程序以及函式都被取代為叫做方法的函式。」

Java Pascal
Main 方法
public static void main(String[] args)
{
   System.out.println("Ho-ho-ho!");
}
程式主體
Begin
   WriteLn("Ho-ho-ho!");
End.
函式/方法
double sqr(double a)
{
   return a * a;
}
函式
Function Sqr(a: Real): Real
Begin
   Sqr := a * a;
End;
以 void 為返回型別的函式
void doubleWrite(String s)
{
   System.out.println(s);
   System.out.println(s);
}
程序
Procedure DoubleWrite(s: String);
Begin
   WriteLn(s);
   WriteLn(s);
End;

「在 Pascal 那半邊,我看到『程式主體』、『函式』和『程序』這些詞,但在 Java 裡它們都叫方法。這有點怪。」

「是的,我們外星人也覺得很怪。但人類就是喜歡把所有東西都統一。」

「在 Java 裡,所有的代碼都是方法的一部份,所以你不用像 在 Pascal 裡面,把 Function 這個詞寫出來宣告一個方法。

「一切都很簡單。如果一行代碼看起來像是 型別 + 名稱,那就是方法或變量的宣告。如果名字後面還跟著括號,那這是一個新方法的宣告。如果沒有跟著括號,那就是變量的宣告。

「在 Java 裡,變量和方法的宣告長得很像。你自己看:」

代碼 描述
String name;
叫做 name 的變量,是一個 String
String getName()
{
}
叫做 getName 的方法,返回一個 String

「還沒說完喔。在 Java 裡,方法不能單獨存在。它們必須被包在類別裡。所以,當人類需要在 Java 裡寫一個小小的程式時,他們必須先建立一個類別在裡面宣告一個 main 方法、然後才能夠把代碼寫在那個方法裡。這些地球生物真是太奇怪了!」

「迪亞哥今天有順道過來,他叫我把這些任務交給你。希望你喜歡。」