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

Javaの静的変数と非静的変数の違い


変数は、プログラムが操作できる名前付きストレージを提供します。 Javaの各変数には特定のタイプがあり、変数のメモリのサイズとレイアウトを決定します。そのメモリ内に格納できる値の範囲。および変数に適用できる一連の操作。

静的変数

静的変数はクラス変数とも呼ばれ、クラスのオブジェクト全体で共通であり、この変数にはクラス名を使用してアクセスすることもできます。

非静的変数

静的でないクラスの変数は、非静的変数またはインスタンス変数と呼ばれます。

以下は、静的変数と非静的変数の重要な違いです。

非静的
Sr。いいえ。
キー
静的
1
アクセス
静的変数には、静的メンバーと非静的メンバー関数の両方からアクセスできます。
静的メンバー関数は非静的変数にアクセスできません。
2
共有
静的変数はグローバル変数として機能し、クラスのすべてのオブジェクト間で共有されます。
非静的変数は、それらが作成されたインスタンスオブジェクトに固有です。
3
メモリ割り当て
静的変数が占めるスペースが少なく、メモリ割り当てが1回行われます。
非静的変数はより多くのスペースを占める可能性があります。メモリ割り当ては実行時に発生する可能性があります。
4
キーワード
静的変数はstaticキーワードを使用して宣言されます。
通常の変数には特別なキーワードは必要ありません。

静的変数と非静的変数の例

JavaTester.java

public class JavaTester {
   public int counter = 0;
   public static int staticCounter = 0;
   public JavaTester(){
      counter++;
      staticCounter++;
   }
   public static void main(String args[]) {
      JavaTester tester = new JavaTester();
      JavaTester tester1 = new JavaTester();
      JavaTester tester2 = new JavaTester();
      System.out.println("Counter: " + tester2.counter);
      System.out.println("Static Counter: " + tester2.staticCounter);
   }
}

出力

Counter: 1
Static Counter: 3

  1. Javaの静的ブロックとコンストラクターの違いは何ですか?

    静的ブロック s タティックブロック クラスの読み込み時に実行されます 。 s タティックブロック main()メソッドを実行する前に実行されます 。 静的 ブロック 名前はありません プロトタイプで。 クラスの読み込み時に実行する必要のあるロジックが必要な場合は、そのロジックを静的ブロック内に配置する必要があります。 クラスの読み込み時に実行されるようにします。 構文 static {    //some statements } 例 public class StaticBlockTest {    static {  

  2. Javaのimportステートメントとstaticimportステートメントの違いは何ですか?

    importステートメントを使用して特定のパッケージのクラスとインターフェースをインポートできます 。 importステートメントを使用する場合は常に、完全修飾名を使用する必要はありません。 短い名前を直接使用できます 。 静的インポートを使用できます 特定のクラスとパッケージから静的メンバーをインポートする 。 静的インポートを使用しているときはいつでも クラス名を使用する必要はありません 静的メンバーにアクセスし、直接使用できます。 インポートステートメント 別のパッケージからクラスまたはメソッドにアクセスするには、完全修飾名を使用する必要があります または、インポートを使用できます ス