2017-04-06 3 views
-2

私はJavaの初心者です。という概念を静的に理解しようとしています。はJavaを学ぶために買った本です。しかし、プログラムでの私の実験のために、私は非常に混乱しています。本書では、staticはこのキーワードを参照できないと述べています。静的ではなく通常の関数を使用するまでは問題ありません。これで、このキーワードで静的変数にアクセスできました!!なぜ私はこのキーワードをJavaの静的変数に使用できるのですか

import java.util.Random; 

class Static { 
    public static void main(String[] com){ 

     System.out.println("By default the mobile is having " 
          + Mobile.RAM + "gigabytes of RAM and" 
          + Mobile.CameraMP + " mega pixels of camera"); 

     Mobile S4mini = new Mobile("S4 Mini" , 4 , 16); 
     S4mini.displayMobileSpecs(true); 

     Mobile mob2 = new Mobile("fdf" , 23 , 45); 
     mob2.displayMobileSpecs(true); 
     S4mini.displayMobileSpecs(false); 
    } 
} 

class Mobile{ 

    static int RAM; 
    static int CameraMP; 
    Random rand = new Random(); 

    double InternalMemorySpace; 
    double ExternalMemorySpace; 

    String modelNo; 

    Mobile(String modelName,double internalMem , double externalMem) 
    { 
     this.modelNo = modelName; 
     this.InternalMemorySpace = internalMem; 
     this.ExternalMemorySpace = externalMem; 
    } 

    static { 
     RAM = 4; 
     CameraMP = 12; 

     System.out.println("The Static part of the class is executed"); 
    } 

    void displayMobileSpecs(boolean change){ 

     if(change) 
     this.RAM = (int) rand.nextInt(8) + 2; 

     System.out.println(this.RAM + " , " + Mobile.RAM); 
    } 
} 

だから、静的変数はこれを使用してアクセスすることができることではなく、静的関数または何に(下記のコードでdisplayMobileSpecs関数を参照)?私は本当に混乱しており、これは私が見ているように非常にばかげた質問ですが、私に答えてください。

(注意:ところで、プログラムで使用されるモバイルのばかげた例を気にしないでください感謝:)。)

答えて

2

静的変数が静的 機能でこれを使用してアクセスではなく、できること

静的ブロックまたは静的メソッドでは、参照するインスタンスが存在しないため、「this」キーワードは許可されません。

なぜ私は、Java

に静的変数と

を、このキーワードを使用することができています。しかし、あなたが「この」非静的メソッドでも、あなたは「この」キーワードで静的変数を参照する使用することができますを参照することができます非静的メソッド。これは現在のオブジェクトを指しています。

+0

静的メンバーは 'this'のようなインスタンス参照で参照できますが、そうしないでください。 –

+1

私は同意する.....しかし、私の答えはOPの質問に限られていた、あなたはそれを取っているとドン。それを加えていただきありがとうございます – mhasan

関連する問題