- 注意
- このエントリは実験中の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行目は「世界」という文字列を表示するプログラムですので、その順番で表示されたと思います。
面白いアプリですね。
返信削除ただ、制限がちょっと分かりませんでした。
ちょっと触ってみると以下の制限のようですね。
・String以外のオブジェクト型の使用はできない
・内部クラスの定義はできないが、無名クラスは使用できる
これらの制限は、実験中ということだからでしょうか
ありがとうございます。
返信削除ご質問の件ですが、環境に悪影響を与える操作を避けるために現在はString以外のクラスの利用を禁止しています (静的型検査で除外しています)。
内部クラスもそれに該当している動作ですが、通常は問題ないと思いますので緩和策を考えてみます。
匿名クラスの場合にパスするのは、静的型検査のみで検査しているのが原因で、
new Object(){ void f() { System.out.println("Hello, world!"); }}.f();
のように匿名型をそのまま参照するとエラーになりました。
内部クラス周りについて修正しました。
返信削除下記のようなプログラムが通ります。
public static void main(String...args) {
class A {{System.out.println("Hello, world!");}}
new A();
}
また、FizzBuzzなどでNumberのサブクラスやStringBuilderくらいは使えるようにしました。