この章で学ぶこと

SUN教科書 Javaプログラマ(SJC-P) 5.0・6.0両対応(試験番号310-055、310-065)
- 作者: ポール・サンヘラ,山本道子,株式会社トップスタジオ
- 出版社/メーカー: 翔泳社
- 発売日: 2009/05/13
- メディア: 単行本(ソフトカバー)
- 購入: 10人 クリック: 139回
- この商品を含むブログ (16件) を見る
Java アプリケーションの編成
ファイルの種類と名前
- コンパイラは、コンパイル時に .java ファイル内に他のクラスへの参照を発見すると classpath 環境変数に記載された場所で .class ファイルを検索する
- インタープリタは、実行時に .class ファイル内に他のクラスへの参照を発見すると classpath 環境変数に記載された場所で .class ファイルを検索する
main() メソッド
- java コマンドでJava クラスを実行すると、JVM が指定したクラスをロードし、そのクラスの main() メソッドを呼び出す。
- main() メソッドは public, static, void でなければならない
- main() メソッドの引数は String の配列でなければならない。 これらの値は、アプリケーションの実行時にコマンドラインで指定できる
- アプリケーションの実行時に数値などを指定しても、main() メソッドには String 型として渡される
可能な main() メソッドの宣言(例外を投げても良い):
public static void main(String[] args){} public static void main(String... args){}
コンパイルが可能だが、実行時にエラーが出る宣言(Java アプリケーションの実行の起点と認識されない):
public void main(String[] args){} // static でない public static void main(String args){} // 引数が String の配列でない static void main(String[] args){} // public でない
名前についてのまとめ
- ソースファイル内に定義したクラスの1つが public として宣言されている場合、.java ファイルの名前はこの public クラスの名前に一致させる必要がある
- 1つのソースファイルに、複数の public クラスは定義できない
- コンパイラは、コンパイル対象のソースファイル内にある各クラスに対応した .class という拡張子のファイルを作成する
- 生成される .class ファイルの名前は、対応するクラスの名前と一致する
パッケージ
- パッケージに属するクラスファイルはすべて、パッケージ名と同じ名前のディレクトリに格納する
- そのクラスが属するパッケージは package キーワードで指定する
- パッケージの階層はドット (.) で区切る
- 異なるパッケージに属するクラスは、完全修飾名「《パッケージ名》.《クラスの単体名》」で指定する
- ソースファイルの先頭で import キーワードを用いて、異なるパッケージのクラスを単体名のみで使うことができる
- ワイルドカード (*) を用いれば、指定したパッケージに属するクラスを全てインポートできる
- Java ファイルでは、各文を次の順番で書く必要がある:
- package 文
- import 文
- クラス定義
- static インポート・・・static 変数や static メソッドのインポート
- static インポートは import static キーワードを用いる
- static インポートでもワイルドカード (*) を使用できる(指定したクラスの全ての static メンバをインポートする)
- static インポートは JDK 5 から可能
クラスパス
- クラスパス・・・コンパイルやインタープリタが、クラスファイルを探す際の対象となるディレクトリや JAR ファイルの一覧を格納している環境変数
- 何も指定していない場合は、デフォルトでカレントディレクトリ (.) が含まれている
- 独自にクラスパスを設定すると、デフォルトのカレントディレクトリが失われる(必要な場合は自分で設定に加える必要がある*1)
クラスパスの指定方法
- 環境変数 classpath に値をセットする
- java および javac コマンド使用時にオプションで指定する。
- Java の決められたディレクトリ (${JAVA_HOME}/jre/lib/ext) に JAR ファイルをコピーする
JAR ファイル
- JAR ファイル・・・.java ファイル、.class ファイル群を圧縮して1つのファイルにしたもの
- JAR ファイルはクラスパスに使用することも可能
- 拡張子は .jar
jar -cf myApp.jar topDir // jar ファイルの作成
jar -tf myApp.jar // JAR ファイル内のディレクトリとファイルの一覧を表示
java -jar myApp.jar // JAR ファイルの実行
java -jar コマンドを実行するには METAINF.MF ファイルを用意し、
Main-Class: MyClass
のように、main() メソッドをもつクラスを指定する必要がある
引数をメソッドに渡す
- メソッドに渡される変数は元の変数のコピー(基本データ型、参照型に関わらず)
- 基本データ型を渡した場合、メソッド内で変数の値が変更されても、元の変数には影響がない
- 参照型を渡した場合、メソッド内でオブジェクトに変更が加えられた場合、元の変数にも変更が反映される
- 参照型を渡した場合、参照そのものが変更されたり、他のオブジェクト(の参照)が代入されたりしても、元の変数には影響がない
- メソッドの戻り値も同じ