Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaの.classファイルはいつ作成される?生成の仕組みと具体例を解説

Javaのクラスファイルは「.class」という拡張子を持つファイルで、その中にはJavaのバイトコードが格納されています。このクラスファイルは、Java仮想マシン(JVM)によって実行することが可能です。

.class」ファイルは、Javaコンパイラが「.java」ファイルのコンパイルに成功した際に生成されます。重要なポイントとして、「.java」ファイルの中に複数のクラスが定義されている場合、それぞれのクラスが個別のクラスファイルとしてコンパイルされるという点が挙げられます。

.classファイルの生成手順

実際に.classファイルを生成するには、ターミナルやコマンドプロンプトで以下のようにjavacコマンドを実行します。

javac ClassTest.java

このコマンドがエラーなく完了すると、同じフォルダ内に.classファイルが出力されます。もしソースコードに文法エラーなどがある場合は、コンパイルが失敗し、.classファイルは生成されません。

サンプルコード

それでは、1つの.javaファイルに複数のクラスが定義されているケースを見てみましょう。

class A {
    A() {
        System.out.println("This is class A");
    }
}
class B {
    B() {
        System.out.println("This is class B");
    }
}
class C {
    C() {
        System.out.println("This is class C");
    }
}
public class ClassTest {
    public static void main(String[] args) {
        A obj1 = new A();
        B obj2 = new B();
        C obj3 = new C();
    }
}

上記の例では、「ClassTest.java」という1つのファイルの中に4つのクラス(A、B、C、ClassTest)が定義されています。そのため、コンパイルが成功すると、対応するフォルダには4つの「.class」ファイルが生成されます。具体的には、以下のファイルです。

  • A.class
  • B.class
  • C.class
  • ClassTest.class

実行結果

生成されたプログラムをjava ClassTestコマンドで実行すると、mainメソッド内で各クラスのインスタンスが生成され、コンストラクタの出力が順番に表示されます。

This is class A
This is class B
This is class C

まとめ

.classファイルは、.javaファイルのコンパイルが成功したタイミングで自動的に作成されるバイトコードファイルです。1つのソースファイルに複数のクラスが含まれている場合は、クラスごとに独立した.classファイルが生成されることを覚えておくと、ビルド後のフォルダ構成を理解しやすくなります。

  1. Javaのpack()メソッドとは?使い方とsetSize()との違いを解説

    pack()メソッドは、JavaのWindowクラスで定義されているメソッドで、フレーム内のすべてのコンポーネントがそれぞれの推奨サイズ(preferred size)以上で表示されるように、ウィンドウのサイズを自動的に調整します。 代替手段として、setSize()メソッドやsetBounds()メソッドを呼び出して、フレームのサイズを明示的に指定する方法もあります。しかし一般的には、pack()メソッドを使用する方がsetSize()よりも推奨されています。その理由は、pack()がフレームのサイズ決定をレイアウトマネージャーに委ねることができ、レイアウトマネージャーはプラットフォーム間の

  2. JavaでJTextFieldにパディングを追加する方法【setMarginの使い方】

    JTextFieldはJTextComponentクラスのサブクラスであり、ユーザーが1行形式でテキストを入力できる、Swingの中でも特に重要なコンポーネントの一つです。JTextFieldでは、ユーザーが入力を行う際にActionListenerインターフェースを通じてアクションイベントが発生します。主なメソッドとしては、setText()、getText()、setBorder()、setEnabled()などが挙げられます。 JTextFieldにパディング(内側の余白)を追加したい場合は、JTextComponentクラスが提供するsetMargin(Insets m)メソッドを使用