• TOP
  •   
  • コラム
  •   
  • staticとは?(int型などにs

プログラミング言語のstaticとは?

プログラミング言語にはstaticというものがあります。C#やJavaなどでもstaticは使用されます。

ここでは、C#やJavaでstaticを使用する方法を説明します。

C#でstaticを使用する場合

C#でstaticは静的メンバーを作成するときに使用します。静的メンバーは、変数や、メソッドなどをインスタンスで作成するわけでなく、プログラムに1つだけ作成したい時に使用します。

staticキーワードを使用することによりプログラムで1つだけのメモリ領域が確保されることになります。

静的メンバーの基本

public static int 100
public static メソッド

このような形でクラス、変数、メソッドを記述する時に、アクセス修飾子に続いて記述をします。

静的メンバーにアクセスするにはインスタンスを生成せず、クラス名に「.(ドット)」をつけて呼び出します。

staticをメソッドにつけた場合、使用出来るフィールドはstaticなフィールドだけなため、注意が必要です。

サンプルコード

internal class Sample
    {
        //静的メンバー
        private static int count = 0;
        //静的メンバーではないもの
        private int value = 0;
 
        //静的メソッド
        internal static void Samplemethod()
        {
            count++;
        }
 
        internal static int GetCount()
        {
            return count;
        }
    }

サンプルコードの説明します。

「private static int count = 0;」でcountという静的メンバーを作成しています。

「internal static void Samplemethod()」と「internal static int GetCount()」はstaticがついているため静的メソッドです。

staticをメソッドにつけた場合使用出来るフィールドはstaticなフィールドだけです。そのため、この2つのメソッド内にvalueを記述するとvalueはstaticがついていなく静的メンバーではないためエラーが出ます。

また、他のクラスでこのSampleクラスの静的メソッド(Samplemethod()とGetCount())を使用したい場合は以下のように記述します。

Sample.Samplemethod();
Sample.GetCount();

このようにインスタンス化せずにクラス名を使用してメソッドを使用します。

Javaでstaticを使用する場合

Javaでstaticはstatic変数、staticメソッドを作成したい時に使用します。また、staticがついたものはstaticメンバと呼ばれます。

staticを使用していない変数はインスタンス化をしなければ使用出来ませんが、staticがついたものはインスタンス化せずに使用することができます。

staticメンバをクラスをもとに複数オブジェクトがインスタンス化されても一カ所に用意されます。そのためstaticメンバは各オブジェクトから共有され使用されます。ですので主にstaticメンバはクラス全体で扱うデータを格納するために使用します。

staticメンバの基本

public static int 100
public static メソッド

このようにクラス、変数、メソッドを記述する時に、アクセス修飾子に続いて記述をします。

staticメンバを参照するにはインスタンスを生成せず、クラス名に「.(ドット)」をつけて呼び出します。

staticメソッドが使用出来るフィールドはstaticなフィールドだけなため、注意が必要です。

サンプルコード

class Samplestatic {

    int num =100;
    //static変数の作成
    static int staticnum = 100;
    void metod(){
    	System.out.println(num);    	
    }
    //staticメソッドの作成
    static void staticmetod(){
    	System.out.println(staticnum);
    }
}

サンプルコードの説明をします。

staticメソッドが使用出来るフィールドはstaticなフィールドだけなため「staticmetod()」内にnumは使用することは出来ません。

「staticnum」と「staticmetod()」を他のクラスで使用したい場合は以下のように記述します。

Samplestatic.stainum;
Samplestatic.staticmetod();

このようにインスタンス化せずにクラス名を使用して記述します。

逆に「num」と「method()」を使用したい場合はインスタンス化をしなければ使用出来ません。

まとめ

C#とJavaでstaticを使用する方法を説明しました。

記述方法などとても似たようなものとなっていますが、プログラミング言語によって記述の仕方も変わることもあるので注意が必要です。

staticは上記以外にもJavaScriptなど様々なプログラミング言語にも使用されます。