アプリ版:「スタンプのみでお礼する」機能のリリースについて

かなり初心者です。全然意味がわかりません。教えてください。よろしくおねがいします。
この意味すべてわからないです。


public class TestCount{
static int counterA;
int counterB;

public static void main(String []args){
TestCount testA=new TestCount();
TestCount testB=new TestCount();

testA.count();
testB.count();
}
public void count(){
for(int i=0;i<5;i++){
counterA++;
counterB++;
}
System.out.println("counterA="+counterA);
System.out.println("counterB="+counterB);
}
}

実行結果
counterA=5
counterA=5
counterB=10
counterB=5
なんでこうなるのかが知りたいです。

A 回答 (4件)

クラス変数counterA は、クラスに共通な変数で1つしかありません。


インスタンス変数counterB は、インスタンス毎作られます。
なので、testA と testB のcounterB は、それぞれ別のものですが、
counterA は、testA と testB で共通の同じものです。
なので、counterB は、5回カウントアップされるので、5になり、
counterA は、testA testB で5回ずつカウントアップされるので、10になります。
    • good
    • 0
この回答へのお礼

よくわかりました。ありがとうございました。

お礼日時:2006/05/17 23:24

ごめんなさい、横槍を入れさせてください。


えと、
public void count(){
for(int i=0;i<5;i++){
counterA++;
counterB++;
}
の部分は

testA.count();
testB.count();
}
によって2回転しますよね?
それならcounterAとcounterBの合計は20になるはずではないのですか??
ところが実行結果は合計25になっています。。
これはどうしてなのですか?
あと、counterAとcounterBの表示が交互にこないのはなぜなのですか??
質問者の解答を差し置いての発言、失礼しました。m(__)m
    • good
    • 0

本当はこうなるはず。


counterA=5
counterB=5
counterA=10
counterB=5

結果を見てえっ。と
思ってしまいました。

理由はBLUEPIXYさんが述べられているとおり
counterAはstatic変数なのでどこかで初期化
されない限り値が保持されるためです。
    • good
    • 0

>この意味すべてわからないです。


順を追って説明して見ましょう。

public class TestCount{   //クラスTestCout定義
static int counterA;    //static変数counterAの定義
int counterB;        //普通の変数counterB定義

public static void main(String []args){
TestCount testA=new TestCount();   //インスタンスtestAの生成      TestCount型の変数testAの定義とメモリ領域の確保

TestCount testB=new TestCount();   //インスタンスtestBの生成      TestCount型の変数testBの定義とメモリ領域の確保


testA.count();         //testAのメソッドcount()の呼出し
testB.count();         //testBのメソッドcount()の呼出し
}
public void count(){      //メソッドcount()の定義
for(int i=0;i<5;i++){
counterA++;          //counterA=cunterA+1
counterB++;          //counterB=cunterB+1

}
System.out.println("counterA="+counterA);
System.out.println("counterB="+counterB);
}
}
    • good
    • 0
この回答へのお礼

わかりやすく教えていただきありがとうございました。

お礼日時:2006/05/17 23:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!