基礎の基礎

Hello World

Java言語で Hello World を書いてみましょう. 以下のプログラムを書き,HelloWorld.java に保存してください(//の後ろは書かなくても構いません). ファイル名とclassの後ろにある名前(クラス名)は必ず一致させていなければいけません. 一致していない場合は,コンパイルエラーが発生します.

public class HelloWorld { // <= クラス宣言の開始
    public static void main(String[] args){ // <= mainメソッドの開始
        System.out.println("Hello World");
    } // <= mainメソッドの終了
} // <= クラス宣言の終了

コンパイル方法

コンパイルには,javac コマンドを利用します.ターミナルで以下のコマンドを入力してください($はプロンプトを表していますので,入力不要です).

$ javac HelloWorld.java # Javaプログラムをコンパイルする

上記のように javacHelloWorld.java を渡して実行してください. コンパイルが行われます.コンパイルに成功すると,HelloWorld.class というクラスファイルが出力されます. a.out のようなファイルは出力されないことに注意してください.

コンパイルのイメージ

コンパイルに失敗すると,コンパイルエラーがコンパイラにより示されます. 代表的なコンパイルエラーは次の通りです.

  • シンボルが見つかりません.
    • 宣言されていない変数を使おうとしたときに指摘されます.
      • 変数は参照できる場所に宣言されていますか.
      • 綴りは間違っていないか確認しましょう.
  • クラスXxxxはpublicであり,ファイルXxxx.javaで宣言しなければなりません
    • Javaではクラス名とファイル名は必ず一致させておかなければいけません.
      • クラス名とファイル名が一致しているか確認しましょう.
  • <identifier>がありません.
    • publicstaticclassなどの綴り間違いが疑われます.
      • public static void main(String[] args)は間違いなく書かれていますか.
      • 一番外側に,public class Xxxxのように囲んでいますか.
      • カッコの対応は合っていますか.
  • \12288は不正な文字です.
    • 全角スペースが入っていないか確認してください.全角スペースはC言語と同じく文字列以外での利用が許されていません.

実行方法

実行するには,java コマンドを利用します. 先ほどコンパイルして得られた HelloWorld.class を実行するには,以下のようなコマンドを入力しましょう.

$ java HelloWorld # Javaプログラムを実行する
Hello World

実行するときには,拡張子(.class)はつけないことに注意してください.

プログラムの解説

一番外側

Javaプログラムは必ず一番外側が public class Xxxx で囲まれている必要があります.この一番外側の囲みをクラス宣言と呼びます. 変数も関数も必ずこのクラス宣言に囲まれた部分でしか定義できません.

また,Xxxx の部分をクラス名と呼び,ファイル名とクラス名は一致させる必要があります. 上の例の場合では,public class HelloWorld{ ... } ですから,HelloWorld.java に保存しなければいけません. それ以外のファイル名に保存すると,コンパイルできません.

mainメソッド

C言語における関数は,Javaでは,メソッド(method)と呼びます. main メソッドは,Javaプログラムを実行した時に一番最初に呼び出されるメソッドです.

main メソッドは,必ず public static void main(String[] args){ ... } であり, なんらかのクラス宣言に含まれています. 大文字小文字も区別されますので,一言一句間違えずに入力してください. なお,mainメソッドは必ずクラス宣言の括弧の内側({ /* この部分 */ })に書かれる必要があります

画面に出力する方法(printf)

Java言語で標準出力(ターミナルの実行画面)に文字を出力するには,System.out.printlnを利用します. 改行を伴って出力されます.改行したくない場合は,System.out.print を用いてください.

ただし,上記のメソッド(printlnもしくはprint)では,%dのような書式付きでは出力できません. C言語のように(printfのように)書式付きで出力したい場合,System.out.printf を利用してください. ただし,改行は \n ではなく,%n を利用してください. 改行はプラットフォーム依存であるためです. 詳しくは FAQ なぜ\nではなく,%nを利用するのでしょうかを参照してください.

なお,%dなどのフォーマット記述子には対応する型が存在します.対応しない型を指定すると実行時エラーが発生します. 対応については,FAQ フォーマット記述子とは何ですかを参照してください.

文字列

C言語と同じく,文字列は,"mojiretu"のように,""(ダブルクォート)で囲んで表します. Hello Worldのサンプルプログラムで言えば,3行目の"Hello World"部分が文字列です. ダブルクォートの内側は自由に変更しても,コンパイルエラーにはならず,実行結果が変わります.