2010年5月7日金曜日

Java入門サンプル(1)

  • 注意
    • このエントリは実験中のJava入門教材のサンプルです
    • GAE の調子が悪かったりQuotaを超えてたりするとデモがうまく動かないかもしれません
    • 技術背景等はGooseあたりを参照してください

Hello, world!

まずは簡単なプログラムを作成してみましょう。Hello.javaという名前のファイルを作成して次の内容を書き込んでください。

public class Hello {

    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

このプログラムを実行するには、コマンドラインで次のように指定します。

cd (ファイルを作成したフォルダ)
javac Hello.java
java -cp . Hello

すると、「System.out.println("Hello, world!");」のところに書いた「Hello, world!」という文字列が画面に表示されたと思います。

Hello, world!

Javaのプログラムは次のような構造で書きます。

public class (ファイルの名前) {

    public static void main(String[] args) {
        (命令)
    }
}

今回は(命令)の部分に、「System.out.println(...);」という「標準出力に文字列を表示する命令」を書きました。 Javaの文字列は " (ダブルクウォーテーション)で囲んで「"Hello, world!"」のように指定します。

練習

2行以上の出力

(命令)の部分には複数行の命令を書くこともできます。

public class (ファイルの名前) {

    public static void main(String[] args) {
        (命令)
    }
}

Hello2.javaという名前のファイルを作成して次の内容を書き込んでください。

public class Hello2 {

    public static void main(String[] args) {
        System.out.println("こんにちは");
        System.out.println("世界");
    }
}

先ほどと同じように実行してみましょう。

cd (ファイルを作成したフォルダ)
javac Hello2.java
java -cp . Hello2

今回は「こんにちは」と「世界」がそれぞれの行に表示されたと思います。

こんにちは
世界

このように、(命令)の部分には連続してJavaの命令を書くことができます。 今回は「System.out.println(...);」という「標準出力に文字列を表示する命令」を2回使って、2行にわたって文字列を表示しました。

System.out.println("こんにちは");
System.out.println("世界");

また、命令は上から書いた順に実行されます。 1行目は「こんにちは」という文字列を表示して、2行目は「世界」という文字列を表示するプログラムですので、その順番で表示されたと思います。

練習

おまけ

3 件のコメント:

  1. 面白いアプリですね。
    ただ、制限がちょっと分かりませんでした。
    ちょっと触ってみると以下の制限のようですね。

    ・String以外のオブジェクト型の使用はできない
    ・内部クラスの定義はできないが、無名クラスは使用できる

    これらの制限は、実験中ということだからでしょうか

    返信削除
  2. ありがとうございます。

    ご質問の件ですが、環境に悪影響を与える操作を避けるために現在はString以外のクラスの利用を禁止しています (静的型検査で除外しています)。

    内部クラスもそれに該当している動作ですが、通常は問題ないと思いますので緩和策を考えてみます。

    匿名クラスの場合にパスするのは、静的型検査のみで検査しているのが原因で、

    new Object(){ void f() { System.out.println("Hello, world!"); }}.f();

    のように匿名型をそのまま参照するとエラーになりました。

    返信削除
  3. 内部クラス周りについて修正しました。
    下記のようなプログラムが通ります。

    public static void main(String...args) {
    class A {{System.out.println("Hello, world!");}}
    new A();
    }

    また、FizzBuzzなどでNumberのサブクラスやStringBuilderくらいは使えるようにしました。

    返信削除