Java で静的とはどういう意味ですか
Java 言語では、static
はさまざまな場所で使用できるキーワードです。static
キーワードは、メンバー変数、メンバー関数、ブロック、およびネストされたクラスとともに使用されます。静的キーワードの適用は、毎回新しいインスタンスを作成したくない場所です。代わりに、単一のコピーがクラス内で共有される場所で使用します。静的変数は、永続メモリの一種であるヒープメモリに格納されます。
Java でのメンバー変数とともに static
キーワードの使用
コードブロックは、静的変数が非静的変数とどのように異なるかを説明します。
public class StaticVariableUsage {
public static void main(String[] args) {
InnerClass in = new InnerClass();
InnerClass in1 = new InnerClass();
InnerClass2 in2 = new InnerClass2();
InnerClass2 in3 = new InnerClass2();
}
static class InnerClass {
static int var4 = 0;
InnerClass() {
var4++;
System.out.println("static variable : " + var4);
}
}
static class InnerClass2 {
int var5 = 0;
InnerClass2() {
var5++;
System.out.println("non-static variable : " + var5);
}
}
}
上記のコードブロックには、StaticVariableUsage
クラスという名前のパブリッククラスがあります。1つの静的メソッドと 2つの内部クラスがあります。InnerClass
という名前の内部クラスには静的整数変数 var4
があり、ゼロで開始されます。このクラスには、静的整数変数をインクリメントしてその値を出力するコンストラクターがあります。
別の内部クラスは InnerClass2
という名前を持ち、非静的変数 var5
を保持します。このクラスには、非静的変数をインクリメントしてその値を出力するコンストラクターもあります。
main
メソッドに移動すると、ここでは、InnerClass
と InnerClass2
が 2 回インスタンス化されます。コンストラクター呼び出しが発生すると、オブジェクトが新しいキーワードでインスタンス化されたときに分析を導き出すことができます。
出力が示すように、静的変数が開始され、保持されます。値は初めてインクリメントされ、1
として出力されます。次回、別のインスタンスを作成すると、コンストラクターが再度呼び出されます。ただし、静的変数はゼロで再初期化されません。代わりに、以前に保存された値がインクリメントされるため、静的変数の値は 2 になります。
同様に、InnerClass2
のインスタンスが作成されると、非静的変数が値 0
に初期化されるたびに。そのため、両方の時間で値を 1
として出力します。
static variable : 1
static variable : 2
non-static variable : 1
non-static variable : 1
Java でのメンバー関数とともに static
キーワードの使用
以下のクラスの他の内部クラスを保持する StaticFunctionUsage
クラスという名前の外部クラスがあります。InnerClass
には静的関数があります。また、InnerClass1
という名前の別の内部クラスには非静的メソッドがあります。
ここで、main
メソッドに移ると、静的関数にクラス名で直接アクセスできることがわかります。InnerClass
オブジェクトをインスタンス化する必要はありません。同様に、クラス名を使用して非静的関数 function1
にアクセスしようとすると、コンパイル時エラーが発生します。関数にアクセスする場合は、in
変数という名前で作成したクラスインスタンスを作成する必要があります。変数の使用は function1
を呼び出すことであり、有効なステートメントです。
public class StaticFunctionUsage {
public static void main(String[] args) {
InnerClass.function();
// InnerClass1.function1();
InnerClass1 in = new InnerClass1();
in.function1();
}
static class InnerClass {
static void function() {
System.out.println("In the static function");
}
}
static class InnerClass1 {
void function1() {
System.out.println("In the non-static function");
}
}
}
上記のコードブロックの出力は次のとおりです。
In the static function
In the non-static function
Java のブロックでの static
キーワードの使用
静的ブロックの使用は、静的変数を初期化することです。プログラムの実行は、main
メソッドから始まります。静的ブロックがクラス内に存在する場合、メインメソッドの実行前に実行されます。
以下は静的ブロックを説明するコードです。
public class StaticBlock {
static {
System.out.println("In the static block");
}
public static void main(String[] args) {
System.out.println("In the main method");
}
}
コードの出力は以下のとおりです。ご覧のとおり、静的ブロック内のステートメントが最初に実行されます。
In the static block
In the main method
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn