2012-01-03 25 views
0

グローバル変数private int temp=0;があります。クラスでは、それは増分しています(いくつかの段階ではtemp = 10と言います)。クラスtempを再度ロードするときはまだ10です。しかし、私はそれを必要とします。どうすればいいですか?グローバル変数宣言問題

コード:この仮定するtemp = 10

public class MyClass 
{ 
private int temp = 0; 

    public void method1() // while calling this method temp increments say temp =1; 
    { 
    temp++; 
    } 

    public void method2() 
    { 
    if(temp == 0) 
    System.out.println("temp = "+temp): 
    } 
} 

、まだMyClasstemp=10をロードしますが、私は再びtemp=0を必要としています。私はプログラミングに慣れていないので、意味があるかどうかはわかりません。 MyClassの - 私が正しくあなたの質問を理解していれば

+4

クラスをロードするなどのことはありませんが、クラスのインスタンスを作成することを意味していました。 tempはグローバル変数ではなく、クラスのメンバーです。クラスのメンバーについて読んでください。 –

+0

あなたは次のようなことをしていることを意味しますか:MyClass mc = new MyClass();それはまだ10ですか?クラスを呼び出すたび、ゼロでなければなりません –

+0

私は、整数値の一時を必要としています。以前の電話にあったものは何でも。 –

答えて

-1

は、あなたが0にあなたがクラスの新しいオブジェクトを作成するたびに一時を再初期化します。

これが望ましい場合は、コンストラクタを使用します。コンストラクタでtempを0に初期化します。

public MyClass 
{ 
     temp = 0; 
} 

この方法で、あなたはMyClassのの新しいオブジェクトを作成するたびに、一時、一時は常には、それがstaticとして宣言されていない限り、0であることを行っているバック0

+2

を使用しようとしている表示します。 MyClassのの新しいオブジェクトを作成するときに、一時は常に0に初期化されます。 – Manish

1

に設定されます。

MyClass mc = new MyClass(); 
mc.method1() // 'temp' of mc object is now 1 
MyClass mc2 = new MyClass(); 
mc2.method2() //'temp' of mc2 object is still 0! 
0

は、私はあなたがなど

クラスのそれぞれの新しいインスタンスはあなたを与えるだろう注ことtemp = 0は、あなたが意味する場合は、クラスを呼び出すクラス、をロードによって何を意味するのかわからないんだけど同じインスタンス内で、この例を参照してください、私はこのカリフォルニア州、method0()

public class MyClass 
{ 
private int temp = 0; 

    public void method0() 
    { 
    temp = 0; 
    } 

    public void method1() 
    { 
    temp++; 
    } 

    public void method2() 
    { 
    if(temp == 0) 
    System.out.println("temp = "+temp): 
    } 
} 

を新しいメソッドを追加しましたSE、

MyClass mc = new MyClass(); 
mc.method2(); 
mc.method1(); 
mc.method2(); 
mc.method0(); 
mc.method2(); 

が、これは何があなたmeant.cheersある

temp = 0 
//Incremented value of temp 
//condition if(temp==0) fails 
//reset value of temp 
temp = 0 

希望、あなたを与えるだろう。